Chris@0: flags = $flags; Chris@0: $this->props = $props; Chris@0: } Chris@0: Chris@0: public function getSubNodeNames() : array { Chris@0: return ['flags', 'props']; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Whether the property is explicitly or implicitly public. Chris@0: * Chris@0: * @return bool Chris@0: */ Chris@0: public function isPublic() : bool { Chris@0: return ($this->flags & Class_::MODIFIER_PUBLIC) !== 0 Chris@0: || ($this->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Whether the property is protected. Chris@0: * Chris@0: * @return bool Chris@0: */ Chris@0: public function isProtected() : bool { Chris@0: return (bool) ($this->flags & Class_::MODIFIER_PROTECTED); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Whether the property is private. Chris@0: * Chris@0: * @return bool Chris@0: */ Chris@0: public function isPrivate() : bool { Chris@0: return (bool) ($this->flags & Class_::MODIFIER_PRIVATE); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Whether the property is static. Chris@0: * Chris@0: * @return bool Chris@0: */ Chris@0: public function isStatic() : bool { Chris@0: return (bool) ($this->flags & Class_::MODIFIER_STATIC); Chris@0: } Chris@0: Chris@0: public function getType() : string { Chris@0: return 'Stmt_Property'; Chris@0: } Chris@0: }