1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-15 10:57:08 +01:00
psalm/src/Psalm/Storage/FunctionLikeParameter.php

119 lines
2.3 KiB
PHP
Raw Normal View History

<?php
namespace Psalm\Storage;
use Psalm\CodeLocation;
use Psalm\Type;
class FunctionLikeParameter
{
use CustomMetadataTrait;
2016-11-02 07:29:00 +01:00
/**
* @var string
*/
public $name;
2016-11-02 07:29:00 +01:00
/**
* @var bool
*/
public $by_ref;
2016-11-02 07:29:00 +01:00
/**
* @var Type\Union|null
2016-11-02 07:29:00 +01:00
*/
public $type;
2016-11-02 07:29:00 +01:00
/**
* @var Type\Union|null
2016-11-02 07:29:00 +01:00
*/
public $signature_type;
/**
* @var bool
*/
public $has_docblock_type = false;
2016-11-02 07:29:00 +01:00
/**
* @var bool
*/
public $is_optional;
2016-11-02 07:29:00 +01:00
/**
* @var bool
*/
public $is_nullable;
/**
* @var Type\Union|null
*/
public $default_type;
2016-11-02 07:29:00 +01:00
/**
* @var CodeLocation|null
2016-11-02 07:29:00 +01:00
*/
2017-03-02 00:36:04 +01:00
public $location;
/**
* @var CodeLocation|null
*/
2017-12-30 03:28:21 +01:00
public $type_location;
/**
* @var CodeLocation|null
*/
public $signature_type_location;
2016-10-15 06:12:57 +02:00
2016-11-02 07:29:00 +01:00
/**
* @var bool
*/
2016-10-23 07:57:11 +02:00
public $is_variadic;
2016-10-15 06:12:57 +02:00
/**
* @param string $name
2017-05-27 02:16:18 +02:00
* @param bool $by_ref
* @param Type\Union|null $type
* @param CodeLocation|null $location
2017-05-27 02:16:18 +02:00
* @param bool $is_optional
* @param bool $is_nullable
* @param bool $is_variadic
* @param Type\Union|null $default_type
2016-10-15 06:12:57 +02:00
*/
2016-11-02 07:29:00 +01:00
public function __construct(
$name,
bool $by_ref,
Type\Union $type = null,
2017-03-02 00:36:04 +01:00
CodeLocation $location = null,
2017-12-30 03:28:21 +01:00
CodeLocation $type_location = null,
2016-11-02 07:29:00 +01:00
$is_optional = true,
$is_nullable = false,
$is_variadic = false,
$default_type = null
2016-11-02 07:29:00 +01:00
) {
$this->name = $name;
$this->by_ref = $by_ref;
$this->type = $type;
$this->signature_type = $type;
$this->is_optional = $is_optional;
$this->is_nullable = $is_nullable;
$this->is_variadic = $is_variadic;
2017-03-02 00:36:04 +01:00
$this->location = $location;
2017-12-30 03:28:21 +01:00
$this->type_location = $type_location;
$this->signature_type_location = $type_location;
$this->default_type = $default_type;
}
public function __toString()
{
2018-04-09 22:45:54 +02:00
return ($this->type ?: 'mixed')
. ($this->is_variadic ? '...' : '')
. ($this->is_optional ? '=' : '');
}
public function __clone()
{
if ($this->type) {
$this->type = clone $this->type;
}
}
}