Nette Documentation Preview

syntax
PHP Тип
*******

.[perex]
[api:Nette\Utils\Type] — це клас для роботи з типами даних PHP.


Встановлення:

```shell
composer require nette/utils
```

Усі приклади передбачають створений псевдонім:

```php
use Nette\Utils\Type;
```


fromReflection($reflection): ?Type .[method]
--------------------------------------------

Статичний метод створює об'єкт Type на основі рефлексії. Параметром може бути об'єкт `ReflectionMethod` або `ReflectionFunction` (повертає тип поверненого значення) або `ReflectionParameter` чи `ReflectionProperty`. Перекладає `self`, `static` та `parent` на справжню назву класу. Якщо суб'єкт не має типу, повертає `null`.

```php
class DemoClass
{
	public self $foo;
}

$prop = new ReflectionProperty(DemoClass::class, 'foo');
echo Type::fromReflection($prop); // 'DemoClass'
```


fromString(string $type): Type .[method]
----------------------------------------

Статичний метод створює об'єкт Type за текстовим записом.

```php
$type = Type::fromString('Foo|Bar');
echo $type;      // 'Foo|Bar'
```


getNames(): (string|array)[] .[method]
--------------------------------------

Повертає масив підтипів, з яких складається складений тип, як рядки.

```php
$type = Type::fromString('string|null'); // або '?string'
$type->getNames();  // ['string', 'null']

$type = Type::fromString('(Foo&Bar)|string');
$type->getNames();  // [['Foo', 'Bar'], 'string']
```


getTypes(): Type[] .[method]
----------------------------

Повертає масив підтипів, з яких складається складений тип, як об'єкти `ReflectionType`:

```php
$type = Type::fromString('string|null'); // or '?string'
$type->getTypes();  // [Type::fromString('string'), Type::fromString('null')]

$type = Type::fromString('(Foo&Bar)|string');
$type->getTypes();  // [Type::fromString('Foo&Bar'), Type::fromString('string')]

$type = Type::fromString('Foo&Bar');
$type->getTypes();  // [Type::fromString('Foo'), Type::fromString('Bar')]
```


getSingleName(): ?string .[method]
----------------------------------

Для простих типів повертає назву типу, інакше null.

```php
$type = Type::fromString('string|null');
echo $type;                       // '?string'
echo $type->getSingleName();      // 'string'

$type = Type::fromString('?Foo');
echo $type;                       // '?Foo'
echo $type->getSingleName();      // 'Foo'

$type = Type::fromString('Foo|Bar');
echo $type;                       // 'Foo|Bar'
echo $type->getSingleName();      // null
```


isSimple(): bool .[method]
--------------------------

Повертає, чи є тип простим. До простих типів відносяться також прості nullable типи:

```php
$type = Type::fromString('string');
$type->isSimple();       // true
$type->isUnion();        // false

$type = Type::fromString('?Foo'); // або 'Foo|null'
$type->isSimple();       // true
$type->isUnion();        // true
```


isUnion(): bool .[method]
-------------------------

Повертає, чи є тип union типом.

```php
$type = Type::fromString('string|int');
$type->isUnion();        // true
```


isIntersection(): bool .[method]
--------------------------------

Повертає, чи є тип intersection типом.


```php
$type = Type::fromString('Foo&Bar');
$type->isIntersection(); // true
```


isBuiltin(): bool .[method]
---------------------------

Повертає, чи є тип простим і водночас вбудованим типом PHP.

```php
$type = Type::fromString('string');
$type->isBuiltin(); // true

$type = Type::fromString('string|int');
$type->isBuiltin(); // false

$type = Type::fromString('Foo');
$type->isBuiltin(); // false
```


isClass(): bool .[method]
-------------------------

Повертає, чи є тип простим і водночас назвою класу.

```php
$type = Type::fromString('string');
$type->isClass();   // false

$type = Type::fromString('Foo|null');
$type->isClass();   // true

$type = Type::fromString('Foo|Bar');
$type->isClass();   // false
```


isClassKeyword(): bool .[method]
--------------------------------

Повертає, чи є тип одним з внутрішніх типів `self`, `parent`, `static`.

```php
$type = Type::fromString('self');
$type->isClassKeyword();   // true

$type = Type::fromString('Foo');
$type->isClassKeyword();   // false
```


allows(string $type): bool .[method]
------------------------------------

Метод `allows()` перевіряє сумісність типів. Наприклад, дозволяє дізнатися, чи може значення певного типу бути передане як параметр.

```php
$type = Type::fromString('string|null');
$type->allows('string'); // true
$type->allows('null');   // true
$type->allows('Foo');    // false

$type = Type::fromString('mixed');
$type->allows('null');   // true
```

PHP Тип

Nette\Utils\Type — це клас для роботи з типами даних PHP.

Встановлення:

composer require nette/utils

Усі приклади передбачають створений псевдонім:

use Nette\Utils\Type;

fromReflection($reflection): ?Type

Статичний метод створює об'єкт Type на основі рефлексії. Параметром може бути об'єкт ReflectionMethod або ReflectionFunction (повертає тип поверненого значення) або ReflectionParameter чи ReflectionProperty. Перекладає self, static та parent на справжню назву класу. Якщо суб'єкт не має типу, повертає null.

class DemoClass
{
	public self $foo;
}

$prop = new ReflectionProperty(DemoClass::class, 'foo');
echo Type::fromReflection($prop); // 'DemoClass'

fromString(string $type): Type

Статичний метод створює об'єкт Type за текстовим записом.

$type = Type::fromString('Foo|Bar');
echo $type;      // 'Foo|Bar'

getNames(): (string|array)[]

Повертає масив підтипів, з яких складається складений тип, як рядки.

$type = Type::fromString('string|null'); // або '?string'
$type->getNames();  // ['string', 'null']

$type = Type::fromString('(Foo&Bar)|string');
$type->getNames();  // [['Foo', 'Bar'], 'string']

getTypes(): Type[]

Повертає масив підтипів, з яких складається складений тип, як об'єкти ReflectionType:

$type = Type::fromString('string|null'); // or '?string'
$type->getTypes();  // [Type::fromString('string'), Type::fromString('null')]

$type = Type::fromString('(Foo&Bar)|string');
$type->getTypes();  // [Type::fromString('Foo&Bar'), Type::fromString('string')]

$type = Type::fromString('Foo&Bar');
$type->getTypes();  // [Type::fromString('Foo'), Type::fromString('Bar')]

getSingleName(): ?string

Для простих типів повертає назву типу, інакше null.

$type = Type::fromString('string|null');
echo $type;                       // '?string'
echo $type->getSingleName();      // 'string'

$type = Type::fromString('?Foo');
echo $type;                       // '?Foo'
echo $type->getSingleName();      // 'Foo'

$type = Type::fromString('Foo|Bar');
echo $type;                       // 'Foo|Bar'
echo $type->getSingleName();      // null

isSimple(): bool

Повертає, чи є тип простим. До простих типів відносяться також прості nullable типи:

$type = Type::fromString('string');
$type->isSimple();       // true
$type->isUnion();        // false

$type = Type::fromString('?Foo'); // або 'Foo|null'
$type->isSimple();       // true
$type->isUnion();        // true

isUnion(): bool

Повертає, чи є тип union типом.

$type = Type::fromString('string|int');
$type->isUnion();        // true

isIntersection(): bool

Повертає, чи є тип intersection типом.

$type = Type::fromString('Foo&Bar');
$type->isIntersection(); // true

isBuiltin(): bool

Повертає, чи є тип простим і водночас вбудованим типом PHP.

$type = Type::fromString('string');
$type->isBuiltin(); // true

$type = Type::fromString('string|int');
$type->isBuiltin(); // false

$type = Type::fromString('Foo');
$type->isBuiltin(); // false

isClass(): bool

Повертає, чи є тип простим і водночас назвою класу.

$type = Type::fromString('string');
$type->isClass();   // false

$type = Type::fromString('Foo|null');
$type->isClass();   // true

$type = Type::fromString('Foo|Bar');
$type->isClass();   // false

isClassKeyword(): bool

Повертає, чи є тип одним з внутрішніх типів self, parent, static.

$type = Type::fromString('self');
$type->isClassKeyword();   // true

$type = Type::fromString('Foo');
$type->isClassKeyword();   // false

allows(string $type): bool

Метод allows() перевіряє сумісність типів. Наприклад, дозволяє дізнатися, чи може значення певного типу бути передане як параметр.

$type = Type::fromString('string|null');
$type->allows('string'); // true
$type->allows('null');   // true
$type->allows('Foo');    // false

$type = Type::fromString('mixed');
$type->allows('null');   // true