コード例 #1
0
 /**
  * @param $class_name string
  */
 public function setClass($class_name)
 {
     if ($this->started) {
         $this->stop();
     }
     $this->class = new Reflection_Class(Builder::className($class_name));
     $this->defaults = $this->class->getDefaultProperties();
 }
コード例 #2
0
ファイル: Builder.php プロジェクト: TuxBoy/Demo-saf
 /**
  * Returns true if any property of $object is set and different than its default value
  *
  * @param $object
  * @return boolean
  */
 public static function isObjectSet($object)
 {
     $result = false;
     $class = new Reflection_Class(get_class($object));
     $defaults = $class->getDefaultProperties();
     foreach ($class->accessProperties() as $property) {
         if (!$property->isStatic()) {
             $value = $property->getValue($object);
             if (isset($value)) {
                 $default = isset($defaults[$property->name]) ? $defaults[$property->name] : $property->getType()->getDefaultValue();
                 if (is_object($value) && !self::isObjectSet($value)) {
                     $value = null;
                 }
                 if ($value != $default) {
                     $result = true;
                     break;
                 }
             }
         }
     }
     return $result;
 }
コード例 #3
0
ファイル: Data_Link.php プロジェクト: TuxBoy/Demo-saf
 /**
  * Returns true if the element's property value changed since previous value
  * and if it is not empty
  *
  * @param $element       object
  * @param $property_name string
  * @param $default_value mixed
  * @return boolean
  */
 protected function valueChanged($element, $property_name, $default_value)
 {
     $id_property_name = 'id_' . $property_name;
     if (!isset($element->{$property_name}) && empty($id_property_name)) {
         return false;
     }
     $element_value = $element->{$property_name};
     if (is_object($element_value)) {
         $class = new Reflection_Class(get_class($element_value));
         $defaults = $class->getDefaultProperties();
         foreach ($class->getListAnnotation('representative')->values() as $property_name) {
             if (isset($defaults[$property_name]) && $this->valueChanged($element_value, $property_name, $defaults[$property_name])) {
                 return true;
             }
         }
         return false;
     } else {
         return isset($element_value) && strval($element_value) != '' && strval($element_value) != strval($default_value);
     }
 }