* @license MIT */ class MagicSleep extends MagicMethodGenerator { /** * Constructor * * @param ReflectionClass $originalClass * @param PropertyGenerator $initializerProperty * @param MethodGenerator $callInitializer */ public function __construct( ReflectionClass $originalClass, PropertyGenerator $initializerProperty, MethodGenerator $callInitializer ) { parent::__construct($originalClass, '__sleep'); $this->setBody( '$this->' . $initializerProperty->getName() . ' && $this->' . $callInitializer->getName() . '(\'__sleep\', []);' . "\n\n" . ($originalClass->hasMethod('__sleep') ? 'return parent::__sleep();' : 'return array_keys((array) $this);') ); } }