*/ public array $methods = []; /** * @var array */ public array $properties = []; /** * @var array */ public array $constants = []; public array $implements = []; public string $extends = ''; public bool $requireCtor = false; public int $flags; public function __construct(string $name, int $flags, string $namespace = '') { $this->flags = $flags; parent::__construct($name, $namespace); } public function hasMethod(string $method): bool { return isset($this->methods[$method]); } public function hasProperty(string $property): bool { return isset($this->properties[$property]); } public function hasConstant(string $name): bool { return isset($this->constants[$name]); } public function getProperty($property): PropertyDef { return $this->properties[$property]; } public function getMethod($method): MethodDef { return $this->methods[$method]; } public function getConstant($name): ConstantDef { return $this->constants[$name]; } }