Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Queue;use ReflectionClass;use ReflectionProperty;trait SerializesModels{use SerializesAndRestoresModelIdentifiers;/*** Prepare the instance values for serialization.** @return array*/public function __serialize(){$values = [];$properties = (new ReflectionClass($this))->getProperties();$class = get_class($this);foreach ($properties as $property) {if ($property->isStatic()) {continue;}$property->setAccessible(true);if (! $property->isInitialized($this)) {continue;}$value = $this->getPropertyValue($property);if ($property->hasDefaultValue() && $value === $property->getDefaultValue()) {continue;}$name = $property->getName();if ($property->isPrivate()) {$name = "\0{$class}\0{$name}";} elseif ($property->isProtected()) {$name = "\0*\0{$name}";}$values[$name] = $this->getSerializedPropertyValue($value);}return $values;}/*** Restore the model after serialization.** @param array $values* @return void*/public function __unserialize(array $values){$properties = (new ReflectionClass($this))->getProperties();$class = get_class($this);foreach ($properties as $property) {if ($property->isStatic()) {continue;}$name = $property->getName();if ($property->isPrivate()) {$name = "\0{$class}\0{$name}";} elseif ($property->isProtected()) {$name = "\0*\0{$name}";}if (! array_key_exists($name, $values)) {continue;}$property->setAccessible(true);$property->setValue($this, $this->getRestoredPropertyValue($values[$name]));}}/*** Get the property value for the given property.** @param \ReflectionProperty $property* @return mixed*/protected function getPropertyValue(ReflectionProperty $property){$property->setAccessible(true);return $property->getValue($this);}}