Viewing file: Method.php (2.89 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace PhpParser\Builder;
use PhpParser; use PhpParser\Node; use PhpParser\Node\Stmt;
class Method extends FunctionLike { protected $name; protected $type = 0; protected $stmts = array();
/** * Creates a method builder. * * @param string $name Name of the method */ public function __construct($name) { $this->name = $name; }
/** * Makes the method public. * * @return $this The builder instance (for fluid interface) */ public function makePublic() { $this->setModifier(Stmt\Class_::MODIFIER_PUBLIC);
return $this; }
/** * Makes the method protected. * * @return $this The builder instance (for fluid interface) */ public function makeProtected() { $this->setModifier(Stmt\Class_::MODIFIER_PROTECTED);
return $this; }
/** * Makes the method private. * * @return $this The builder instance (for fluid interface) */ public function makePrivate() { $this->setModifier(Stmt\Class_::MODIFIER_PRIVATE);
return $this; }
/** * Makes the method static. * * @return $this The builder instance (for fluid interface) */ public function makeStatic() { $this->setModifier(Stmt\Class_::MODIFIER_STATIC);
return $this; }
/** * Makes the method abstract. * * @return $this The builder instance (for fluid interface) */ public function makeAbstract() { if (!empty($this->stmts)) { throw new \LogicException('Cannot make method with statements abstract'); }
$this->setModifier(Stmt\Class_::MODIFIER_ABSTRACT); $this->stmts = null; // abstract methods don't have statements
return $this; }
/** * Makes the method final. * * @return $this The builder instance (for fluid interface) */ public function makeFinal() { $this->setModifier(Stmt\Class_::MODIFIER_FINAL);
return $this; }
/** * Adds a statement. * * @param Node|PhpParser\Builder $stmt The statement to add * * @return $this The builder instance (for fluid interface) */ public function addStmt($stmt) { if (null === $this->stmts) { throw new \LogicException('Cannot add statements to an abstract method'); }
$this->stmts[] = $this->normalizeNode($stmt);
return $this; }
/** * Returns the built method node. * * @return Stmt\ClassMethod The built method node */ public function getNode() { return new Stmt\ClassMethod($this->name, array( 'type' => $this->type, 'byRef' => $this->returnByRef, 'params' => $this->params, 'returnType' => $this->returnType, 'stmts' => $this->stmts, ), $this->attributes); } }
|