示例#1
0
文件: Measure.php 项目: hssh/ZendEx
 /**
  * Defined by Zend_Filter_Interface
  *
  * Returns the numerical value, from measure string
  *
  * @param  string $value
  * @return integer|string
  */
 public function filter($value)
 {
     $locale = $this->_measure->getLocale();
     $matched = false;
     foreach ($this->_measure->getConversionList() as $key => $conversion) {
         if (preg_match("~^(.*)" . $conversion[1] . "\$~", $value, $matches)) {
             try {
                 // $number = Zend_Locale_Format::getNumber(trim($matches[1]), array('locale' => $locale));
                 $this->_measure->setType($key)->setValue(trim($matches[1]));
             } catch (Exception $e) {
                 continue;
             }
             $matched = true;
         }
     }
     return $matched ? $this->_measure->getValue() : $value;
 }
示例#2
0
 /**
  * Set a new type, and convert the value
  *
  * @param  string  $type  New type to set
  * @throws Zend_Measure_Exception
  */
 public function setType($type)
 {
     if (empty(self::$_UNITS[$type])) {
         throw new Zend_Measure_Exception("type ({$type}) is a unknown flow mass");
     }
     // Convert to standard value
     $value = parent::getValue();
     if (is_array(self::$_UNITS[parent::getType()][0])) {
         foreach (self::$_UNITS[parent::getType()][0] as $key => $found) {
             switch ($key) {
                 case "/":
                     $value /= $found;
                     break;
                 default:
                     $value *= $found;
                     break;
             }
         }
     } else {
         $value = $value * self::$_UNITS[parent::getType()][0];
     }
     // Convert to expected value
     if (is_array(self::$_UNITS[$type][0])) {
         foreach (self::$_UNITS[$type][0] as $key => $found) {
             switch ($key) {
                 case "/":
                     $value *= $found;
                     break;
                 default:
                     $value /= $found;
                     break;
             }
         }
     } else {
         $value = $value / self::$_UNITS[$type][0];
     }
     parent::setValue($value, $type, $this->_Locale);
     parent::setType($type);
 }
示例#3
0
 /**
  * Set a new type, and convert the value
  *
  * @param $type  new type to set
  * @throws Zend_Measure_Exception
  */
 public function setType($type)
 {
     if (empty(self::$_UNITS[$type])) {
         throw Zend::exception('Zend_Measure_Exception', 'unknown type of number:' . $type);
     }
     $value = $this->toDecimal(parent::getValue(), parent::getType());
     $value = $this->fromDecimal($value, $type);
     parent::setValue($value, $type, $this->_Locale);
     parent::setType($type);
 }
示例#4
0
 /**
  * Compares two units
  *
  * @param  Zend_Measure_Abstract $object object of same unit type
  * @return boolean
  */
 public function compare($object)
 {
     $object->setType($this->getType());
     $value = $this->getValue(-1) - $object->getValue(-1);
     if ($value < 0) {
         return -1;
     } else {
         if ($value > 0) {
             return 1;
         }
     }
     return 0;
 }
示例#5
0
 /**
  * Set a new type, and convert the value
  *
  * @param  string  $type  New type to set
  * @throws Zend_Measure_Exception
  */
 public function setType($type)
 {
     if (empty(self::$_UNITS[$type])) {
         throw new Zend_Measure_Exception("type ({$type}) is a unknown illumination");
     }
     // Convert to standard value
     $value = parent::getValue();
     $value = $value * self::$_UNITS[parent::getType()][0];
     // Convert to expected value
     $value = $value / self::$_UNITS[$type][0];
     parent::setValue($value, $type, $this->_Locale);
     parent::setType($type);
 }
示例#6
0
 /**
  * Set a new type, and convert the value
  *
  * @param  $type  type to set
  * @throws Zend_Measure_Exception
  */
 public function setType($type)
 {
     if (empty(self::$_UNITS[$type])) {
         self::throwException('unknown type of lightness:' . $type);
     }
     // Convert to standard value
     $value = parent::getValue();
     $value = $value * self::$_UNITS[parent::getType()][0];
     // Convert to expected value
     $value = $value / self::$_UNITS[$type][0];
     parent::setValue($value, $type, $this->_Locale);
     parent::setType($type);
 }
示例#7
0
 /**
  * Set a new type, and convert the value
  *
  * @throws Zend_Measure_Exception
  */
 public function setType($type)
 {
     if (empty(self::$_UNITS[$type])) {
         throw Zend::exception('Zend_Measure_Exception', 'unknown type of force:' . $type);
     }
     // Convert to standard value
     $value = parent::getValue();
     $value = $value * self::$_UNITS[parent::getType()][0];
     // Convert to expected value
     $value = $value / self::$_UNITS[$type][0];
     parent::setValue($value, $type, $this->_Locale);
     parent::setType($type);
 }
示例#8
0
 /**
  * Set a new type, and convert the value
  *
  * @param $type  new type to set
  * @throws Zend_Measure_Exception
  */
 public function setType($type)
 {
     if (empty(self::$_UNITS[$type])) {
         self::throwException('unknown type of kinematic viscosity:' . $type);
     }
     // Convert to standard value
     $value = parent::getValue();
     if (is_array(self::$_UNITS[parent::getType()][0])) {
         foreach (self::$_UNITS[parent::getType()][0] as $key => $found) {
             switch ($key) {
                 case "/":
                     $value /= $found;
                     break;
                 default:
                     $value *= $found;
                     break;
             }
         }
     } else {
         $value = $value * self::$_UNITS[parent::getType()][0];
     }
     // Convert to expected value
     if (is_array(self::$_UNITS[$type][0])) {
         foreach (self::$_UNITS[$type][0] as $key => $found) {
             switch ($key) {
                 case "/":
                     $value *= $found;
                     break;
                 default:
                     $value /= $found;
                     break;
             }
         }
     } else {
         $value = $value / self::$_UNITS[$type][0];
     }
     parent::setValue($value, $type, $this->_Locale);
     parent::setType($type);
 }
示例#9
0
 /**
  * Set a new type, and convert the value
  *
  * @param $type  new type to set
  * @throws Zend_Measure_Exception
  */
 public function setType($type)
 {
     if (empty(self::$_UNITS[$type])) {
         self::throwException('unknown type of binary:' . $type);
     }
     // Convert to standard value
     $value = parent::getValue();
     $value = bcmul($value, self::$_UNITS[parent::getType()][0], 25);
     // Convert to expected value
     $value = bcdiv($value, self::$_UNITS[$type][0]);
     parent::setValue($value, $type, $this->_Locale);
     parent::setType($type);
 }
示例#10
0
 /**
  * Set a new type, and convert the value
  *
  * @param $type new type to set
  * @throws Zend_Measure_Exception
  */
 public function setType($type)
 {
     if (empty(self::$_UNITS[$type])) {
         throw Zend::exception('Zend_Measure_Exception', 'unknown type of temperature:' . $type);
     }
     // Convert to standard value
     $value = parent::getValue();
     if (is_array(self::$_UNITS[parent::getType()][0])) {
         foreach (self::$_UNITS[parent::getType()][0] as $key => $found) {
             switch ($key) {
                 case "/":
                     $value /= $found;
                     break;
                 case "+":
                     $value += $found;
                     break;
                 case "-":
                     $value -= $found;
                     break;
                 default:
                     $value *= $found;
                     break;
             }
         }
     } else {
         $value = $value * self::$_UNITS[parent::getType()][0];
     }
     // Convert to expected value
     if (is_array(self::$_UNITS[$type][0])) {
         foreach (self::$_UNITS[$type][0] as $key => $found) {
             switch ($key) {
                 case "/":
                     $value *= $found;
                     break;
                 case "+":
                     $value -= $found;
                     break;
                 case "-":
                     $value += $found;
                     break;
                 default:
                     $value /= $found;
                     break;
             }
         }
     } else {
         $value = $value / self::$_UNITS[$type][0];
     }
     parent::setValue($value, $type, $this->_Locale);
     parent::setType($type);
 }
示例#11
0
 /**
  * Set a new type, and convert the value
  *
  * @param  string  $type  New type to set
  * @throws Zend_Measure_Exception
  */
 public function setType($type)
 {
     if (empty(self::$_UNITS[$type])) {
         throw new Zend_Measure_Exception("type ({$type}) is a unknown binary");
     }
     // Convert to standard value
     $value = parent::getValue();
     $value = call_user_func(Zend_Locale_Math::$mul, $value, self::$_UNITS[parent::getType()][0], 25);
     // Convert to expected value
     $value = call_user_func(Zend_Locale_Math::$div, $value, self::$_UNITS[$type][0]);
     parent::setValue($value, $type, $this->_Locale);
     parent::setType($type);
 }