/** * Set the 'documenation' attribute to this element's PHPDoc string * @return string */ protected function set_doc_attribute() { if ($this->node->hasAttribute('comments')) { foreach ($this->node->getAttribute('comments') as $comment) { if ($comment instanceof PhpParser\Comment\Doc) { $this->attributes['documentation'] = $this->clean_doc_string($comment->getText()); return; } } } }
public function leaveNode(PhpParser\Node $node) { if ($node->hasAttribute("_insertGetMMethodAfterMe") || $node->hasAttribute("_insertSetMMethodAfterMe")) { $statements = [$node]; if ($node->hasAttribute("_insertGetMMethodAfterMe")) { $subStatements = CMap::make(); $len = CArray::length($this->m_propsToWrap); for ($i = 0; $i < $len; $i++) { $propName = $this->m_propsToWrap[$i]; $subCondition = new PhpParser\Node\Expr\BooleanNot(new PhpParser\Node\Expr\FuncCall(new PhpParser\Node\Name(self::$ms_isFwCallFuncName))); $return0 = new PhpParser\Node\Stmt\Return_(new PhpParser\Node\Expr\PropertyFetch(new PhpParser\Node\Expr\Variable("this"), $propName)); $return1 = new PhpParser\Node\Stmt\Return_(new PhpParser\Node\Expr\FuncCall(new PhpParser\Node\Name(self::$ms_toOopFuncName), [new PhpParser\Node\Expr\PropertyFetch(new PhpParser\Node\Expr\Variable("this"), $propName)])); $else = new PhpParser\Node\Stmt\Else_([$return1]); $subIf = new PhpParser\Node\Stmt\If_($subCondition, ["stmts" => [$return0], "else" => $else]); $condition = new PhpParser\Node\Expr\BinaryOp\Identical(new PhpParser\Node\Expr\Variable("name"), new PhpParser\Node\Scalar\String($propName)); $if = new PhpParser\Node\Stmt\If_($condition, ["stmts" => [$subIf]]); CMap::insertValue($subStatements, $if); } $method = new PhpParser\Node\Stmt\ClassMethod("__get", ["type" => PhpParser\Node\Stmt\Class_::MODIFIER_PUBLIC, "byRef" => true, "params" => [new PhpParser\Node\Param("name")], "stmts" => $subStatements]); CMap::insertValue($statements, $method); } if ($node->hasAttribute("_insertSetMMethodAfterMe")) { $subStatements = CMap::make(); $len = CArray::length($this->m_propsToWrap); for ($i = 0; $i < $len; $i++) { $propName = $this->m_propsToWrap[$i]; $subCondition = new PhpParser\Node\Expr\BooleanNot(new PhpParser\Node\Expr\FuncCall(new PhpParser\Node\Name(self::$ms_isFwCallFuncName))); $assignment0 = new PhpParser\Node\Expr\Assign(new PhpParser\Node\Expr\PropertyFetch(new PhpParser\Node\Expr\Variable("this"), $propName), new PhpParser\Node\Expr\Variable("value")); $assignment1 = new PhpParser\Node\Expr\Assign(new PhpParser\Node\Expr\PropertyFetch(new PhpParser\Node\Expr\Variable("this"), $propName), new PhpParser\Node\Expr\FuncCall(new PhpParser\Node\Name(self::$ms_fromOopFuncName), [new PhpParser\Node\Expr\Variable("value")])); $else = new PhpParser\Node\Stmt\Else_([$assignment1]); $subIf = new PhpParser\Node\Stmt\If_($subCondition, ["stmts" => [$assignment0], "else" => $else]); $condition = new PhpParser\Node\Expr\BinaryOp\Identical(new PhpParser\Node\Expr\Variable("name"), new PhpParser\Node\Scalar\String($propName)); $if = new PhpParser\Node\Stmt\If_($condition, ["stmts" => [$subIf]]); CMap::insertValue($subStatements, $if); } $method = new PhpParser\Node\Stmt\ClassMethod("__set", ["type" => PhpParser\Node\Stmt\Class_::MODIFIER_PUBLIC, "params" => [new PhpParser\Node\Param("name"), new PhpParser\Node\Param("value")], "stmts" => $subStatements]); CMap::insertValue($statements, $method); } return $statements; } }