/** * Implementation of Serializable::unserialize() * * @param string $data Serialized data */ public function unserialize($data) { ClosureStream::register(); if (!static::supportBinding()) { $this->unserializePHP53($data); return; } $this->code = unserialize($data); if ($this->code['use']) { $this->code['use'] = array_map(array($this, 'mapPointers'), $this->code['use']); extract($this->code['use'], EXTR_OVERWRITE | EXTR_REFS); } $this->closure = (include ClosureStream::STREAM_PROTO . '://' . $this->code['function']); if ($this->code['this'] === $this) { $this->code['this'] = null; } if ($this->code['scope'] !== null || $this->code['this'] !== null) { if ($this->code['this'] !== null) { $this->isBound = $this->serializeThis = true; } $this->closure = $this->closure->bindTo($this->code['this'], $this->code['scope']); } $this->code = $this->code['function']; }