Here you can find overview of commonly used nodes and how to build PHP code from them. For all nodes, check php-parser code.
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\String_;
$value = new Variable('Tom');
$key = new String_('name');
return new ArrayItem($value, $key);↓
'name' => $Tom- $key-- /** @var null|Expr Key */
- $value-- /** @var Expr Value */
- $byRef-- /** @var bool Whether to assign by reference */
- $unpack-- /** @var bool Whether to unpack the argument */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\ClosureUse;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('variableName');
return new ClosureUse($variable);↓
$variableName- $var-- /** @var Expr\Variable Variable to use */
- $byRef-- /** @var bool Whether to use by reference */
<?php
declare(strict_types=1);
use PhpParser\Node\Const_;
use PhpParser\Node\Scalar\String_;
return new Const_('CONSTANT_NAME', new String_('default'));↓
CONSTANT_NAME = 'default'- $name-- /** @var Identifier Name */
- $value-- /** @var Expr Value */
- $namespacedName-- /** @var Name|null Namespaced name (if using NameResolver) */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\Int_;
$variable = new Variable('variableName');
$dimension = new Int_(0);
return new ArrayDimFetch($variable, $dimension);↓
$variableName[0]- $var-- /** @var Expr Variable */
- $dim-- /** @var null|Expr Array index / dim */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\String_;
$value = new Variable('Tom');
$key = new String_('name');
$arrayItem = new ArrayItem($value, $key);
return new Array_([$arrayItem]);↓
['name' => $Tom]- $items-- /** @var ArrayItem[] Items */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\ArrowFunction;
use PhpParser\Node\Scalar\Int_;
$subNodes['expr'] = new Int_(1);
return new ArrowFunction($subNodes);↓
fn() => 1- $static-- /** @var bool Whether the closure is static */
- $byRef-- /** @var bool Whether to return by reference */
- $params-- /** @var Node\Param[] */
- $returnType-- /** @var null|Node\Identifier|Node\Name|Node\ComplexType */
- $expr-- /** @var Expr Expression body */
- $attrGroups-- /** @var Node\AttributeGroup[] */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\String_;
$variable = new Variable('variableName');
$value = new String_('some value');
return new Assign($variable, $value);↓
$variableName = 'some value'<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\String_;
$propertyFetch = new PropertyFetch(new Variable('someObject'), 'someProperty');
$value = new String_('some value');
return new Assign($propertyFetch, $value);↓
$someObject->someProperty = 'some value'- $var-- /** @var Expr Variable */
- $expr-- /** @var Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\AssignOp\Coalesce;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new Coalesce($left, $right);↓
5 ??= 10- $var-- /** @var Expr Variable */
- $expr-- /** @var Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\AssignOp\Concat;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new Concat($left, $right);↓
5 .= 10- $var-- /** @var Expr Variable */
- $expr-- /** @var Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\BinaryOp\BooleanAnd;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new BooleanAnd($left, $right);↓
5 && 10- $left-- /** @var Expr The left hand side expression */
- $right-- /** @var Expr The right hand side expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\BinaryOp\Coalesce;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new Coalesce($left, $right);↓
5 ?? 10- $left-- /** @var Expr The left hand side expression */
- $right-- /** @var Expr The right hand side expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\BinaryOp\Concat;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new Concat($left, $right);↓
5 . 10- $left-- /** @var Expr The left hand side expression */
- $right-- /** @var Expr The right hand side expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\BinaryOp\Equal;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new Equal($left, $right);↓
5 == 10- $left-- /** @var Expr The left hand side expression */
- $right-- /** @var Expr The right hand side expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\BinaryOp\Identical;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new Identical($left, $right);↓
5 === 10- $left-- /** @var Expr The left hand side expression */
- $right-- /** @var Expr The right hand side expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\BinaryOp\Minus;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new Minus($left, $right);↓
5 - 10- $left-- /** @var Expr The left hand side expression */
- $right-- /** @var Expr The right hand side expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\BinaryOp\NotEqual;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new NotEqual($left, $right);↓
5 != 10- $left-- /** @var Expr The left hand side expression */
- $right-- /** @var Expr The right hand side expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\BinaryOp\NotIdentical;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new NotIdentical($left, $right);↓
5 !== 10- $left-- /** @var Expr The left hand side expression */
- $right-- /** @var Expr The right hand side expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\BinaryOp\Spaceship;
use PhpParser\Node\Scalar\Int_;
$left = new Int_(5);
$right = new Int_(10);
return new Spaceship($left, $right);↓
5 <=> 10- $left-- /** @var Expr The left hand side expression */
- $right-- /** @var Expr The right hand side expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\BooleanNot;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('isEligible');
return new BooleanNot($variable);↓
!$isEligible- $expr-- /** @var Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Cast\Array_;
use PhpParser\Node\Expr\Variable;
$expr = new Variable('variableName');
return new Array_($expr);↓
(array) $variableName- $expr-- /** @var Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Cast\Bool_;
use PhpParser\Node\Expr\Variable;
$expr = new Variable('variableName');
return new Bool_($expr);↓
(bool) $variableName- $expr-- /** @var Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Cast\Int_;
use PhpParser\Node\Expr\Variable;
$expr = new Variable('variableName');
return new Int_($expr);↓
(int) $variableName- $expr-- /** @var Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Cast\String_;
use PhpParser\Node\Expr\Variable;
$expr = new Variable('variableName');
return new String_($expr);↓
(string) $variableName- $expr-- /** @var Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Name\FullyQualified;
$class = new FullyQualified('SomeClassName');
return new ClassConstFetch($class, 'SOME_CONSTANT');↓
\SomeClassName::SOME_CONSTANT- $class-- /** @var Name|Expr Class name */
- $name-- /** @var Identifier|Expr|Error Constant name */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Name;
$name = new Name('true');
return new ConstFetch($name);↓
true- $name-- /** @var Name Constant name */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Empty_;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('variableName');
return new Empty_($variable);↓
empty($variableName)- $expr-- /** @var Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Eval_;
use PhpParser\Node\Scalar\String_;
$string = new String_('Some php code');
return new Eval_(new String_('Some php code'));↓
eval('Some php code')- $expr-- /** @var Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Name;
$args = [new Arg(new Variable('someVariable'))];
return new FuncCall(new Name('func_call'), $args);↓
func_call($someVariable)- $name-- /** @var Node\Name|Expr Function name */
- $args-- /** @var array<Node\Arg|Node\VariadicPlaceholder> Arguments */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Include_;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('variableName');
return new Include_($variable, Include_::TYPE_INCLUDE);↓
include $variableName<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Include_;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('variableName');
return new Include_($variable, Include_::TYPE_REQUIRE_ONCE);↓
require_once $variableName- $expr-- /** @var Expr Expression */
- $type-- /** @var int Type of include */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Instanceof_;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Name\FullyQualified;
$variable = new Variable('variableName');
$class = new FullyQualified('SomeClassName');
return new Instanceof_($variable, $class);↓
$variableName instanceof \SomeClassName- $expr-- /** @var Expr Expression */
- $class-- /** @var Name|Expr Class name */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Isset_;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('variableName');
return new Isset_([$variable]);↓
isset($variableName)- $vars-- /** @var Expr[] Variables */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\List_;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('variableName');
$anotherVariable = new Variable('anotherVariableName');
$arrayItems = [new ArrayItem($variable), new ArrayItem($anotherVariable)];
return new List_($arrayItems);↓
[$variableName, $anotherVariableName]- $items-- /** @var (ArrayItem|null)[] List of items to assign to */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Match_;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\MatchArm;
use PhpParser\Node\Scalar\Int_;
use PhpParser\Node\Scalar\String_;
$variable = new Variable('variableName');
$body = new String_('yes');
$cond = new Int_(1);
$matchArm = new MatchArm([$cond], $body);
return new Match_($variable, [$matchArm]);↓
match ($variableName) {
    1 => 'yes',
}- $cond-- /** @var Node\Expr Condition */
- $arms-- /** @var MatchArm[] */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('someObject');
return new MethodCall($variable, 'methodName');↓
$someObject->methodName()<?php
declare(strict_types=1);
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\String_;
$variable = new Variable('someObject');
$args = [];
$args[] = new Arg(new String_('yes'));
$methodCall = new MethodCall($variable, 'methodName', $args);
$nestedMethodCall = new MethodCall($methodCall, 'nextMethodName');
return $nestedMethodCall;↓
$someObject->methodName('yes')->nextMethodName()<?php
declare(strict_types=1);
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\Variable;
$thisVariable = new Variable('this');
$propertyFetch = new PropertyFetch($thisVariable, 'someProperty');
return new MethodCall($propertyFetch, 'methodName');↓
$this->someProperty->methodName()<?php
declare(strict_types=1);
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\String_;
$variable = new Variable('someObject');
$args = [];
$args[] = new Arg(new String_('yes'));
$args[] = new Arg(new String_('maybe'));
return new MethodCall($variable, 'methodName', $args);↓
$someObject->methodName('yes', 'maybe')- $var-- /** @var Expr Variable holding object */
- $name-- /** @var Identifier|Expr Method name */
- $args-- /** @var array<Arg|VariadicPlaceholder> Arguments */
<?php
declare(strict_types=1);
// anonymous class
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Stmt\Class_;
$class = new Class_(null);
return new New_($class);↓
new class
{
}<?php
declare(strict_types=1);
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Name;
$class = new Name('SomeClass');
return new New_($class);↓
new SomeClass()- $class-- /** @var Node\Name|Expr|Node\Stmt\Class_ Class name */
- $args-- /** @var array<Arg|VariadicPlaceholder> Arguments */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\NullsafeMethodCall;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('variableName');
return new NullsafeMethodCall($variable, 'methodName');↓
$variableName?->methodName()- $var-- /** @var Expr Variable holding object */
- $name-- /** @var Identifier|Expr Method name */
- $args-- /** @var array<Arg|VariadicPlaceholder> Arguments */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\NullsafePropertyFetch;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('variableName');
return new NullsafePropertyFetch($variable, 'someProperty');↓
$variableName?->someProperty- $var-- /** @var Expr Variable holding object */
- $name-- /** @var Identifier|Expr Property name */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\Variable;
$variable = new Variable('variableName');
return new PropertyFetch($variable, 'propertyName');↓
$variableName->propertyName- $var-- /** @var Expr Variable holding object */
- $name-- /** @var Identifier|Expr Property name */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Name\FullyQualified;
$fullyQualified = new FullyQualified('ClassName');
return new StaticCall($fullyQualified, 'methodName');↓
\ClassName::methodName()- $class-- /** @var Node\Name|Expr Class name */
- $name-- /** @var Identifier|Expr Method name */
- $args-- /** @var array<Arg|VariadicPlaceholder> Arguments */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\StaticPropertyFetch;
use PhpParser\Node\Name\FullyQualified;
$class = new FullyQualified('StaticClassName');
return new StaticPropertyFetch($class, 'someProperty');↓
\StaticClassName::$someProperty- $class-- /** @var Name|Expr Class name */
- $name-- /** @var VarLikeIdentifier|Expr Property name */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Expr\Ternary;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Name;
$variable = new Variable('variableName');
$trueConstFetch = new ConstFetch(new Name('true'));
$falseConstFetch = new ConstFetch(new Name('false'));
return new Ternary($variable, $trueConstFetch, $falseConstFetch);↓
$variableName ? true : false- $cond-- /** @var Expr Condition */
- $if-- /** @var null|Expr Expression for true */
- $else-- /** @var Expr Expression for false */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Throw_;
use PhpParser\Node\Scalar\String_;
$string = new String_('some string');
return new Throw_($string);↓
throw 'some string'<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Throw_;
use PhpParser\Node\Scalar\String_;
$string = new String_('some string');
return new Throw_($string);↓
throw 'some string'- $expr-- /** @var Node\Expr Expression */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Variable;
return new Variable('variableName');↓
$variableName- $name-- /** @var string|Expr Name */
<?php
declare(strict_types=1);
use PhpParser\Node\MatchArm;
use PhpParser\Node\Scalar\Int_;
use PhpParser\Node\Scalar\String_;
$conds = [new Int_(1)];
$body = new String_('yes');
return new MatchArm($conds, $body);↓
1 => 'yes'- $conds-- /** @var null|list<Node\Expr> */
- $body- ``
<?php
declare(strict_types=1);
use PhpParser\Node\Name;
return new Name('shortName');↓
shortName- $name- `/**- @psalm-var non-empty-string
- @var string Name as string */`
 
- $specialClassNames-- /** @var array<string, bool> */
<?php
declare(strict_types=1);
use PhpParser\Node\Name\FullyQualified;
return new FullyQualified('SomeNamespace\ShortName');↓
\SomeNamespace\ShortName- $name- `/**- @psalm-var non-empty-string
- @var string Name as string */`
 
<?php
declare(strict_types=1);
use PhpParser\Node\Name;
use PhpParser\Node\NullableType;
return new NullableType(new Name('SomeType'));↓
?SomeType- $type-- /** @var Identifier|Name Type */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Param;
$variable = new Variable('variableName');
return new Param($variable);↓
$variableName- $type-- /** @var null|Identifier|Name|ComplexType Type declaration */
- $byRef-- /** @var bool Whether parameter is passed by reference */
- $variadic-- /** @var bool Whether this is a variadic argument */
- $var-- /** @var Expr\Variable|Expr\Error Parameter variable */
- $default-- /** @var null|Expr Default value */
- $flags-- /** @var int Optional visibility flags */
- $attrGroups-- /** @var AttributeGroup[] PHP attribute groups */
- $hooks-- /** @var PropertyHook[] Property hooks for promoted properties */
<?php
declare(strict_types=1);
use PhpParser\Node\Scalar\Float_;
return new Float_(100.5);↓
100.5- $value-- /** @var float Number value */
<?php
declare(strict_types=1);
use PhpParser\Node\Scalar\Int_;
return new Int_(100);↓
100- $value-- /** @var int Number value */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\Encapsed;
return new Encapsed([new Variable('variableName')]);↓
"{$variableName}"- $parts-- /** @var (Expr|InterpolatedStringPart)[] list of string parts */
<?php
declare(strict_types=1);
use PhpParser\Node\Scalar\MagicConst\Property;
return new Property();↓
__PROPERTY__<?php
declare(strict_types=1);
use PhpParser\Node\Scalar\String_;
return new String_('some string');↓
'some string'- $value-- /** @var string String value */
- $replacements-- /** @var array<string, string> Escaped character to its decoded value */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\StaticVar;
$variable = new Variable('variableName');
return new StaticVar($variable);↓
$variableName- $var-- /** @var Expr\Variable Variable */
- $default-- /** @var null|Node\Expr Default value */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\Int_;
use PhpParser\Node\Stmt\Block;
use PhpParser\Node\Stmt\Expression;
$assign = new Assign(new Variable('someValue'), new Int_(10000));
return new Block([new Expression($assign)]);↓
{
    $someValue = 10000;
}- $stmts-- /** @var Stmt[] Statements */
<?php
declare(strict_types=1);
use PhpParser\Modifiers;
use PhpParser\Node\Const_;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\ClassConst;
$defaultValue = new String_('default value');
$const = new Const_('SOME_CLASS_CONSTANT', $defaultValue);
return new ClassConst([$const], Modifiers::PUBLIC);↓
public const SOME_CLASS_CONSTANT = 'default value';- $flags-- /** @var int Modifiers */
- $consts-- /** @var Node\Const_[] Constant declarations */
- $attrGroups-- /** @var Node\AttributeGroup[] PHP attribute groups */
- $type-- /** @var Node\Identifier|Node\Name|Node\ComplexType|null Type declaration */
<?php
declare(strict_types=1);
use PhpParser\Modifiers;
use PhpParser\Node\Stmt\ClassMethod;
$classMethod = new ClassMethod('methodName');
$classMethod->flags = Modifiers::PUBLIC;
return $classMethod;↓
public function methodName()
{
}<?php
declare(strict_types=1);
use PhpParser\Modifiers;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Identifier;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\ClassMethod;
$classMethod = new ClassMethod('methodName');
$classMethod->flags = Modifiers::PRIVATE;
$param = new Param(new Variable('paramName'));
$classMethod->params = [$param];
$classMethod->returnType = new Identifier('string');
return $classMethod;↓
private function methodName($paramName): string
{
}<?php
declare(strict_types=1);
use PhpParser\Modifiers;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\Int_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Expression;
$classMethod = new ClassMethod('methodName');
$classMethod->flags = Modifiers::PUBLIC;
$variable = new Variable('some');
$number = new Int_(10000);
$assign = new Assign($variable, $number);
$classMethod->stmts[] = new Expression($assign);
return $classMethod;↓
public function methodName()
{
    $some = 10000;
}- $flags-- /** @var int Flags */
- $byRef-- /** @var bool Whether to return by reference */
- $name-- /** @var Node\Identifier Name */
- $params-- /** @var Node\Param[] Parameters */
- $returnType-- /** @var null|Node\Identifier|Node\Name|Node\ComplexType Return type */
- $stmts-- /** @var Node\Stmt[]|null Statements */
- $attrGroups-- /** @var Node\AttributeGroup[] PHP attribute groups */
- $magicNames-- /** @var array<string, bool> */
<?php
declare(strict_types=1);
use PhpParser\Node\Stmt\Class_;
return new Class_('ClassName');↓
class ClassName
{
}<?php
declare(strict_types=1);
use PhpParser\Modifiers;
use PhpParser\Node\Stmt\Class_;
$class = new Class_('ClassName');
$class->flags |= Modifiers::FINAL;
return $class;↓
final class ClassName
{
}<?php
declare(strict_types=1);
use PhpParser\Modifiers;
use PhpParser\Node\Identifier;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Property;
use PhpParser\Node\Stmt\PropertyProperty;
$class = new Class_(new Identifier('ClassName'));
$propertyProperty = new PropertyProperty('someProperty');
$property = new Property(Modifiers::PRIVATE, [$propertyProperty]);
$class->stmts[] = $property;
return $class;↓
class ClassName
{
    private $someProperty;
}<?php
declare(strict_types=1);
use PhpParser\Modifiers;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
$class = new Class_('ClassName');
$class->flags = Modifiers::FINAL;
$class->extends = new FullyQualified('ParentClass');
return $class;↓
final class ClassName extends \ParentClass
{
}- $flags-- /** @var int Modifiers */
- $extends-- /** @var null|Node\Name Name of extended class */
- $implements-- /** @var Node\Name[] Names of implemented interfaces */
- $name-- /** @var Node\Identifier|null Name */
- $stmts-- /** @var Node\Stmt[] Statements */
- $attrGroups-- /** @var Node\AttributeGroup[] PHP attribute groups */
- $namespacedName-- /** @var Node\Name|null Namespaced name (if using NameResolver) */
<?php
declare(strict_types=1);
use PhpParser\Node\Const_;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Const_ as ConstStmt;
$consts = [new Const_('CONSTANT_IN_CLASS', new String_('default value'))];
return new ConstStmt($consts);↓
const CONSTANT_IN_CLASS = 'default value';- $consts-- /** @var Node\Const_[] Constant declarations */
- $attrGroups-- /** @var Node\AttributeGroup[] PHP attribute groups */
<?php
declare(strict_types=1);
use PhpParser\Node\Scalar\Int_;
use PhpParser\Node\Stmt\Declare_;
use PhpParser\Node\Stmt\DeclareDeclare;
$declareDeclare = new DeclareDeclare('strict_types', new Int_(1));
return new Declare_([$declareDeclare]);↓
declare (strict_types=1);- $declares-- /** @var DeclareItem[] List of declares */
- $stmts-- /** @var Node\Stmt[]|null Statements */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Do_;
$variable = new Variable('variableName');
return new Do_($variable);↓
do {
} while ($variableName);- $stmts-- /** @var Node\Stmt[] Statements */
- $cond-- /** @var Node\Expr Condition */
<?php
declare(strict_types=1);
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Echo_;
$string = new String_('hello');
return new Echo_([$string]);↓
echo 'hello';- $exprs-- /** @var Node\Expr[] Expressions */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\ElseIf_;
use PhpParser\Node\Stmt\Return_;
$name = new Name('true');
$constFetch = new ConstFetch($name);
$stmt = new Return_();
return new ElseIf_($constFetch, [$stmt]);↓
elseif (true) {
    return;
}- $cond-- /** @var Node\Expr Condition */
- $stmts-- /** @var Node\Stmt[] Statements */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Foreach_;
$foreachedVariable = new Variable('foreachedVariableName');
$asVariable = new Variable('asVariable');
return new Foreach_($foreachedVariable, $asVariable);↓
foreach ($foreachedVariableName as $asVariable) {
}- $expr-- /** @var Node\Expr Expression to iterate */
- $keyVar-- /** @var null|Node\Expr Variable to assign key to */
- $byRef-- /** @var bool Whether to assign value by reference */
- $valueVar-- /** @var Node\Expr Variable to assign value to */
- $stmts-- /** @var Node\Stmt[] Statements */
<?php
declare(strict_types=1);
use PhpParser\Node\Stmt\Function_;
return new Function_('some_function');↓
function some_function()
{
}- $byRef-- /** @var bool Whether function returns by reference */
- $name-- /** @var Node\Identifier Name */
- $params-- /** @var Node\Param[] Parameters */
- $returnType-- /** @var null|Node\Identifier|Node\Name|Node\ComplexType Return type */
- $stmts-- /** @var Node\Stmt[] Statements */
- $attrGroups-- /** @var Node\AttributeGroup[] PHP attribute groups */
- $namespacedName-- /** @var Node\Name|null Namespaced name (if using NameResolver) */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\If_;
$cond = new ConstFetch(new Name('true'));
return new If_($cond);↓
if (true) {
}- $cond-- /** @var Node\Expr Condition expression */
- $stmts-- /** @var Node\Stmt[] Statements */
- $elseifs-- /** @var ElseIf_[] Elseif clauses */
- $else-- /** @var null|Else_ Else clause */
<?php
declare(strict_types=1);
use PhpParser\Node\Stmt\InlineHTML;
return new InlineHTML('<strong>feel</strong>');↓
?>
<strong>feel</strong><?php- $value-- /** @var string String */
<?php
declare(strict_types=1);
use PhpParser\Node\Identifier;
use PhpParser\Node\Stmt\Interface_;
return new Interface_(new Identifier('InterfaceName'));↓
interface InterfaceName
{
}- $extends-- /** @var Node\Name[] Extended interfaces */
- $name-- /** @var Node\Identifier|null Name */
- $stmts-- /** @var Node\Stmt[] Statements */
- $attrGroups-- /** @var Node\AttributeGroup[] PHP attribute groups */
- $namespacedName-- /** @var Node\Name|null Namespaced name (if using NameResolver) */
<?php
declare(strict_types=1);
use PhpParser\Node\Stmt\Label;
return new Label('labelName');↓
labelName:- $name-- /** @var Identifier Name */
<?php
declare(strict_types=1);
use PhpParser\Node\Identifier;
use PhpParser\Modifiers;
use PhpParser\Node\Stmt\Property;
use PhpParser\Node\Stmt\PropertyProperty;
use PhpParser\Node\VarLikeIdentifier;
$propertyProperty = new PropertyProperty(new VarLikeIdentifier('propertyName'));
return new Property(Modifiers::PUBLIC, [$propertyProperty], [], new Identifier('string'));↓
public string $propertyName;<?php
declare(strict_types=1);
use PhpParser\Node\PropertyItem;
use PhpParser\Node\Stmt\Property;
use PhpParser\Node\Expr\BinaryOp\Plus;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\Int_;
use PhpParser\Node\PropertyHook;
use PhpParser\Modifiers;
$propertyItem = new PropertyItem('someProperty');
$property = new Property(Modifiers::PUBLIC, [$propertyItem]);
$plus = new Plus(
    new Variable('variable'),
    new Int_(100)
);
$getPropertyHook = new PropertyHook('getProperty', $plus);
$property->hooks[] = $getPropertyHook;
return $property;↓
public $someProperty {
    getProperty => $variable + 100;
}<?php
declare(strict_types=1);
use PhpParser\Modifiers;
use PhpParser\Node\Stmt\Property;
use PhpParser\Node\Stmt\PropertyProperty;
use PhpParser\Node\VarLikeIdentifier;
$propertyProperty = new PropertyProperty(new VarLikeIdentifier('propertyName'));
return new Property(Modifiers::PUBLIC, [$propertyProperty]);↓
public $propertyName;<?php
declare(strict_types=1);
use PhpParser\Modifiers;
use PhpParser\Node\Stmt\Property;
use PhpParser\Node\Stmt\PropertyProperty;
$propertyProperties = [new PropertyProperty('firstProperty'), new PropertyProperty('secondProperty')];
return new Property(Modifiers::STATIC | Modifiers::PUBLIC, $propertyProperties);↓
public static $firstProperty, $secondProperty;- $flags-- /** @var int Modifiers */
- $props-- /** @var PropertyItem[] Properties */
- $type-- /** @var null|Identifier|Name|ComplexType Type declaration */
- $attrGroups-- /** @var Node\AttributeGroup[] PHP attribute groups */
- $hooks-- /** @var Node\PropertyHook[] Property hooks */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Static_;
use PhpParser\Node\Stmt\StaticVar;
$staticVars = [new StaticVar(new Variable('static'))];
return new Static_($staticVars);↓
static $static;- $vars-- /** @var StaticVar[] Variable definitions */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\Int_;
use PhpParser\Node\Stmt\Case_;
use PhpParser\Node\Stmt\Switch_;
$cond = new Variable('variableName');
$cases = [new Case_(new Int_(1))];
return new Switch_($cond, $cases);↓
switch ($variableName) {
    case 1:
}- $cond-- /** @var Node\Expr Condition */
- $cases-- /** @var Case_[] Case list */
<?php
declare(strict_types=1);
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\TraitUse;
return new TraitUse([new FullyQualified('TraitName')]);↓
use \TraitName;- $traits-- /** @var Node\Name[] Traits */
- $adaptations-- /** @var TraitUseAdaptation[] Adaptations */
<?php
declare(strict_types=1);
use PhpParser\Modifiers;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\TraitUseAdaptation\Alias;
$traitFullyQualified = new FullyQualified('TraitName');
return new Alias($traitFullyQualified, 'method', Modifiers::PUBLIC, 'aliasedMethod');↓
\TraitName::method as public aliasedMethod;- $newModifier-- /** @var null|int New modifier */
- $newName-- /** @var null|Node\Identifier New name */
- $trait-- /** @var Node\Name|null Trait name */
- $method-- /** @var Node\Identifier Method name */
<?php
declare(strict_types=1);
use PhpParser\Node\Stmt\Trait_;
return new Trait_('TraitName');↓
trait TraitName
{
}- $name-- /** @var Node\Identifier|null Name */
- $stmts-- /** @var Node\Stmt[] Statements */
- $attrGroups-- /** @var Node\AttributeGroup[] PHP attribute groups */
- $namespacedName-- /** @var Node\Name|null Namespaced name (if using NameResolver) */
<?php
declare(strict_types=1);
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Catch_;
use PhpParser\Node\Stmt\Echo_;
use PhpParser\Node\Stmt\Finally_;
use PhpParser\Node\Stmt\TryCatch;
$echo = new Echo_([new String_('one')]);
$tryStmts = [$echo];
$echo2 = new Echo_([new String_('two')]);
$catch = new Catch_([new FullyQualified('SomeType')], null, [$echo2]);
$echo3 = new Echo_([new String_('three')]);
$finally = new Finally_([$echo3]);
return new TryCatch($tryStmts, [$catch]);↓
try {
    echo 'one';
} catch (\SomeType) {
    echo 'two';
}- $stmts-- /** @var Node\Stmt[] Statements */
- $catches-- /** @var Catch_[] Catches */
- $finally-- /** @var null|Finally_ Optional finally node */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Unset_;
$variable = new Variable('variableName');
return new Unset_([$variable]);↓
unset($variableName);- $vars-- /** @var Node\Expr[] Variables to unset */
<?php
declare(strict_types=1);
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\Use_;
use PhpParser\Node\Stmt\UseUse;
$useUse = new UseUse(new Name('UsedNamespace'));
return new Use_([$useUse]);↓
use UsedNamespace;- $type-- /** @var self::TYPE_* Type of alias */
- $uses-- /** @var UseItem[] Aliases */
<?php
declare(strict_types=1);
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\While_;
return new While_(new Variable('variableName'));↓
while ($variableName) {
}- $cond-- /** @var Node\Expr Condition */
- $stmts-- /** @var Node\Stmt[] Statements */
<?php
declare(strict_types=1);
use PhpParser\Node\Identifier;
use PhpParser\Node\UnionType;
$unionedTypes = [new Identifier('string'), new Identifier('int')];
return new UnionType($unionedTypes);↓
string|int- $types-- /** @var (Identifier|Name|IntersectionType)[] Types */