mirror of
https://github.com/phabelio/PHP-Parser.git
synced 2024-12-02 09:27:58 +01:00
0483391aca
With the upcoming addition of intersection types, a type can be Identifier|Name|NullableType|UnionType|IntersectionType, which is quite the mouthful. Give NullableType and UnionType a common base class ComplexType, which does not have any behavior, but allows to write these types (and check them in instanceof) more easily.
61 lines
2.1 KiB
PHP
61 lines
2.1 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace PhpParser\Node;
|
|
|
|
use PhpParser\NodeAbstract;
|
|
|
|
class Param extends NodeAbstract
|
|
{
|
|
/** @var null|Identifier|Name|ComplexType Type declaration */
|
|
public $type;
|
|
/** @var bool Whether parameter is passed by reference */
|
|
public $byRef;
|
|
/** @var bool Whether this is a variadic argument */
|
|
public $variadic;
|
|
/** @var Expr\Variable|Expr\Error Parameter variable */
|
|
public $var;
|
|
/** @var null|Expr Default value */
|
|
public $default;
|
|
/** @var int */
|
|
public $flags;
|
|
/** @var AttributeGroup[] PHP attribute groups */
|
|
public $attrGroups;
|
|
|
|
/**
|
|
* Constructs a parameter node.
|
|
*
|
|
* @param Expr\Variable|Expr\Error $var Parameter variable
|
|
* @param null|Expr $default Default value
|
|
* @param null|string|Identifier|Name|ComplexType $type Type declaration
|
|
* @param bool $byRef Whether is passed by reference
|
|
* @param bool $variadic Whether this is a variadic argument
|
|
* @param array $attributes Additional attributes
|
|
* @param int $flags Optional visibility flags
|
|
* @param AttributeGroup[] $attrGroups PHP attribute groups
|
|
*/
|
|
public function __construct(
|
|
$var, Expr $default = null, $type = null,
|
|
bool $byRef = false, bool $variadic = false,
|
|
array $attributes = [],
|
|
int $flags = 0,
|
|
array $attrGroups = []
|
|
) {
|
|
$this->attributes = $attributes;
|
|
$this->type = \is_string($type) ? new Identifier($type) : $type;
|
|
$this->byRef = $byRef;
|
|
$this->variadic = $variadic;
|
|
$this->var = $var;
|
|
$this->default = $default;
|
|
$this->flags = $flags;
|
|
$this->attrGroups = $attrGroups;
|
|
}
|
|
|
|
public function getSubNodeNames() : array {
|
|
return ['attrGroups', 'flags', 'type', 'byRef', 'variadic', 'var', 'default'];
|
|
}
|
|
|
|
public function getType() : string {
|
|
return 'Param';
|
|
}
|
|
}
|