2018-11-23 12:29:20 +00:00
< ? php declare ( strict_types = 1 );
namespace PhpParser\Node\Stmt ;
use PhpParser\Node ;
2019-01-24 08:00:03 +00:00
use PhpParser\Node\Identifier ;
use PhpParser\Node\Name ;
use PhpParser\Node\NullableType ;
2018-11-23 12:29:20 +00:00
class Property extends Node\Stmt
{
/** @var int Modifiers */
public $flags ;
/** @var PropertyProperty[] Properties */
public $props ;
2019-01-24 08:00:03 +00:00
/** @var null|Identifier|Name|NullableType Type declaration */
public $type ;
2018-11-23 12:29:20 +00:00
/**
* Constructs a class property list node .
*
2019-01-24 08:00:03 +00:00
* @ param int $flags Modifiers
* @ param PropertyProperty [] $props Properties
* @ param array $attributes Additional attributes
* @ param null | string | Identifier | Name | NullableType $type Type declaration
2018-11-23 12:29:20 +00:00
*/
2019-01-24 08:00:03 +00:00
public function __construct ( int $flags , array $props , array $attributes = [], $type = null ) {
2018-11-23 12:29:20 +00:00
parent :: __construct ( $attributes );
$this -> flags = $flags ;
$this -> props = $props ;
2019-01-24 08:00:03 +00:00
$this -> type = \is_string ( $type ) ? new Identifier ( $type ) : $type ;
2018-11-23 12:29:20 +00:00
}
public function getSubNodeNames () : array {
2019-01-24 08:00:03 +00:00
return [ 'flags' , 'type' , 'props' ];
2018-11-23 12:29:20 +00:00
}
/**
* Whether the property is explicitly or implicitly public .
*
* @ return bool
*/
public function isPublic () : bool {
return ( $this -> flags & Class_ :: MODIFIER_PUBLIC ) !== 0
|| ( $this -> flags & Class_ :: VISIBILITY_MODIFIER_MASK ) === 0 ;
}
/**
* Whether the property is protected .
*
* @ return bool
*/
public function isProtected () : bool {
return ( bool ) ( $this -> flags & Class_ :: MODIFIER_PROTECTED );
}
/**
* Whether the property is private .
*
* @ return bool
*/
public function isPrivate () : bool {
return ( bool ) ( $this -> flags & Class_ :: MODIFIER_PRIVATE );
}
/**
* Whether the property is static .
*
* @ return bool
*/
public function isStatic () : bool {
return ( bool ) ( $this -> flags & Class_ :: MODIFIER_STATIC );
}
2019-01-24 08:00:03 +00:00
2018-11-23 12:29:20 +00:00
public function getType () : string {
return 'Stmt_Property' ;
}
}