Doctrine\ODM\MongoDB\Mapping\ClassMetadata::__sleep PHP Method

__sleep() public method

It is only serialized what is necessary for best unserialization performance. That means any metadata properties that are not set or empty or simply have their default value are NOT serialized. Parts that are also NOT serialized because they can not be properly unserialized: - reflClass (ReflectionClass) - reflFields (ReflectionProperty array)
public __sleep ( ) : array
return array The names of all the fields that should be serialized.
    public function __sleep()
    {
        // This metadata is always serialized/cached.
        $serialized = array('fieldMappings', 'associationMappings', 'identifier', 'name', 'namespace', 'db', 'collection', 'writeConcern', 'rootDocumentName', 'generatorType', 'generatorOptions', 'idGenerator', 'indexes', 'shardKey');
        // The rest of the metadata is only serialized if necessary.
        if ($this->changeTrackingPolicy != self::CHANGETRACKING_DEFERRED_IMPLICIT) {
            $serialized[] = 'changeTrackingPolicy';
        }
        if ($this->customRepositoryClassName) {
            $serialized[] = 'customRepositoryClassName';
        }
        if ($this->inheritanceType != self::INHERITANCE_TYPE_NONE) {
            $serialized[] = 'inheritanceType';
            $serialized[] = 'discriminatorField';
            $serialized[] = 'discriminatorValue';
            $serialized[] = 'discriminatorMap';
            $serialized[] = 'defaultDiscriminatorValue';
            $serialized[] = 'parentClasses';
            $serialized[] = 'subClasses';
        }
        if ($this->isMappedSuperclass) {
            $serialized[] = 'isMappedSuperclass';
        }
        if ($this->isEmbeddedDocument) {
            $serialized[] = 'isEmbeddedDocument';
        }
        if ($this->isQueryResultDocument) {
            $serialized[] = 'isQueryResultDocument';
        }
        if ($this->isVersioned) {
            $serialized[] = 'isVersioned';
            $serialized[] = 'versionField';
        }
        if ($this->lifecycleCallbacks) {
            $serialized[] = 'lifecycleCallbacks';
        }
        if ($this->file) {
            $serialized[] = 'file';
        }
        if ($this->slaveOkay) {
            $serialized[] = 'slaveOkay';
        }
        if ($this->distance) {
            $serialized[] = 'distance';
        }
        if ($this->collectionCapped) {
            $serialized[] = 'collectionCapped';
            $serialized[] = 'collectionSize';
            $serialized[] = 'collectionMax';
        }
        return $serialized;
    }

Usage Example

 /**
  * Determines which fields get serialized.
  *
  * @return array The names of all the fields that should be serialized.
  */
 public function __sleep()
 {
     $serialized = parent::__sleep();
     if (isset($this->accessControl)) {
         $serialized[] = 'accessControl';
     }
     if (isset($this->crypt)) {
         $serialized[] = 'crypt';
     }
     if (isset($this->generator)) {
         $serialized[] = 'generator';
     }
     if (isset($this->freeze)) {
         $serialized[] = 'freeze';
     }
     if (isset($this->owner)) {
         $serialized[] = 'owner';
     }
     if (isset($this->permissions)) {
         $serialized[] = 'permissions';
     }
     if (isset($this->rest)) {
         $serialized[] = 'rest';
     }
     if (isset($this->roles)) {
         $serialized[] = 'roles';
     }
     if (isset($this->serializer)) {
         $serialized[] = 'serializer';
     }
     if (isset($this->softDelete)) {
         $serialized[] = 'softDelete';
     }
     if (isset($this->stamp)) {
         $serialized[] = 'stamp';
     }
     if (isset($this->state)) {
         $serialized[] = 'state';
     }
     if (isset($this->validator)) {
         $serialized[] = 'validator';
     }
     if (isset($this->zones)) {
         $serialized[] = 'zones';
     }
     return $serialized;
 }