/** * Initializes a reflection for the property * * @param string $className Name of the class with properties * @param string $propertyName Name of the property to reflect * @param Property $propertyType Property type definition node * @param PropertyProperty $propertyNode Concrete property definition (value, name) */ public function __construct($className, $propertyName, Property $propertyType = null, PropertyProperty $propertyNode = null) { $this->className = $className; if (!$propertyType || !$propertyNode) { list($propertyType, $propertyNode) = ReflectionEngine::parseClassProperty($className, $propertyName); } $this->propertyTypeNode = $propertyType; $this->propertyNode = $propertyNode; // Let's unset original read-only properties to have a control over them via __get unset($this->name, $this->class); }