forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			111 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			111 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | namespace PhpParser\Builder; | ||
|  | 
 | ||
|  | use PhpParser; | ||
|  | use PhpParser\Node\Stmt; | ||
|  | 
 | ||
|  | class Property extends PhpParser\BuilderAbstract | ||
|  | { | ||
|  |     protected $name; | ||
|  | 
 | ||
|  |     protected $type = 0; | ||
|  |     protected $default = null; | ||
|  |     protected $attributes = array(); | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Creates a property builder. | ||
|  |      * | ||
|  |      * @param string $name Name of the property | ||
|  |      */ | ||
|  |     public function __construct($name) { | ||
|  |         $this->name = $name; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Makes the property public. | ||
|  |      * | ||
|  |      * @return $this The builder instance (for fluid interface) | ||
|  |      */ | ||
|  |     public function makePublic() { | ||
|  |         $this->setModifier(Stmt\Class_::MODIFIER_PUBLIC); | ||
|  | 
 | ||
|  |         return $this; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Makes the property protected. | ||
|  |      * | ||
|  |      * @return $this The builder instance (for fluid interface) | ||
|  |      */ | ||
|  |     public function makeProtected() { | ||
|  |         $this->setModifier(Stmt\Class_::MODIFIER_PROTECTED); | ||
|  | 
 | ||
|  |         return $this; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Makes the property private. | ||
|  |      * | ||
|  |      * @return $this The builder instance (for fluid interface) | ||
|  |      */ | ||
|  |     public function makePrivate() { | ||
|  |         $this->setModifier(Stmt\Class_::MODIFIER_PRIVATE); | ||
|  | 
 | ||
|  |         return $this; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Makes the property static. | ||
|  |      * | ||
|  |      * @return $this The builder instance (for fluid interface) | ||
|  |      */ | ||
|  |     public function makeStatic() { | ||
|  |         $this->setModifier(Stmt\Class_::MODIFIER_STATIC); | ||
|  | 
 | ||
|  |         return $this; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Sets default value for the property. | ||
|  |      * | ||
|  |      * @param mixed $value Default value to use | ||
|  |      * | ||
|  |      * @return $this The builder instance (for fluid interface) | ||
|  |      */ | ||
|  |     public function setDefault($value) { | ||
|  |         $this->default = $this->normalizeValue($value); | ||
|  | 
 | ||
|  |         return $this; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Sets doc comment for the property. | ||
|  |      * | ||
|  |      * @param PhpParser\Comment\Doc|string $docComment Doc comment to set | ||
|  |      * | ||
|  |      * @return $this The builder instance (for fluid interface) | ||
|  |      */ | ||
|  |     public function setDocComment($docComment) { | ||
|  |         $this->attributes = array( | ||
|  |             'comments' => array($this->normalizeDocComment($docComment)) | ||
|  |         ); | ||
|  | 
 | ||
|  |         return $this; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Returns the built class node. | ||
|  |      * | ||
|  |      * @return Stmt\Property The built property node | ||
|  |      */ | ||
|  |     public function getNode() { | ||
|  |         return new Stmt\Property( | ||
|  |             $this->type !== 0 ? $this->type : Stmt\Class_::MODIFIER_PUBLIC, | ||
|  |             array( | ||
|  |                 new Stmt\PropertyProperty($this->name, $this->default) | ||
|  |             ), | ||
|  |             $this->attributes | ||
|  |         ); | ||
|  |     } | ||
|  | } |