예제 #1
0
파일: Parser.php 프로젝트: kidaa30/redcat
 /**
  * Parse a class member list.
  * @param PartialNode|null $doc_comment DocBlock associated with method
  * @param ModifiersNode $modifiers Member modifiers
  * @return ClassMemberListNode
  * @throws ParserException
  */
 private function classMemberList($doc_comment, ModifiersNode $modifiers)
 {
     // Modifier checks
     if ($modifiers->getAbstract()) {
         throw new ParserException($this->filename, $this->iterator->getLineNumber(), $this->iterator->getColumnNumber(), "members can not be declared abstract");
     }
     if ($modifiers->getFinal()) {
         throw new ParserException($this->filename, $this->iterator->getLineNumber(), $this->iterator->getColumnNumber(), "members can not be declared final");
     }
     $node = new ClassMemberListNode();
     $node->mergeNode($doc_comment);
     $node->mergeNode($modifiers);
     $members = new CommaListNode();
     do {
         $members->addChild($this->classMember());
     } while ($this->tryMatch(',', $members));
     $node->addChild($members, 'members');
     $this->endStatement($node);
     return $node;
 }
예제 #2
0
 /**
  * Add property to class.
  *
  * @param string|ClassMemberListNode $property
  * @return $this
  */
 public function appendProperty($property)
 {
     if (is_string($property)) {
         $property = ClassMemberListNode::create($property);
     }
     $properties = $this->statements->children(Filter::isInstanceOf('\\Pharborist\\ClassMemberListNode'));
     if ($properties->count() === 0) {
         $this->statements->firstChild()->after($property);
     } else {
         $properties->last()->after($property);
     }
     FormatterFactory::format($this);
     return $this;
 }
 public function testClassProperty()
 {
     $property = ClassMemberListNode::create('someProperty');
     $this->assertEquals('private $someProperty;', $property->getText());
     $property->setVisibility(Token::_protected());
     $this->assertEquals('protected $someProperty;', $property->getText());
 }