Opis\Closure\SerializableClosure::serialize PHP Method

serialize() public method

Implementation of Serializable::serialize()
public serialize ( ) : string
return string The serialized closure
    public function serialize()
    {
        if ($this->scope === null) {
            $this->scope = new ClosureScope();
            $this->scope->toserialize++;
        }
        if (!$this->scope->serializations++) {
            $this->scope->storage = new SplObjectStorage();
        }
        $scope = $object = null;
        $reflector = $this->getReflector();
        if (!static::supportBinding()) {
            $this->reference = new SelfReference($this->closure);
        } else {
            if ($reflector->isBindingRequired()) {
                $object = $reflector->getClosureThis();
                if ($scope = $reflector->getClosureScopeClass()) {
                    $scope = $scope->name;
                }
            } elseif ($reflector->isScopeRequired()) {
                if ($scope = $reflector->getClosureScopeClass()) {
                    $scope = $scope->name;
                }
                if ($this->serializeThis) {
                    $object = $reflector->getClosureThis();
                }
            }
        }
        $this->scope->storage[$this->closure] = $this;
        $use = null;
        $code = $reflector->getCode();
        if ($variables = $reflector->getUseVariables()) {
            $use =& $this->mapByReference($variables);
        }
        $ret = serialize(array('use' => $use, 'function' => $code, 'scope' => $scope, 'this' => $object, 'self' => $this->reference));
        if (!--$this->scope->serializations && !--$this->scope->toserialize) {
            $this->scope->storage = null;
        }
        return $ret;
    }

Usage Example

Example #1
0
 /**
  * Override serialize method
  *
  * @return  string  The serialized closure
  */
 public function serialize()
 {
     if (static::$securityProvider === null) {
         throw new RuntimeException('You must set a security provider in order to use this class');
     }
     $data = parent::serialize();
     $data =& static::$securityProvider->sign($data);
     return serialize($data);
 }