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'); // nebo '?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]
--------------------------

Връща дали типът е прост тип. Обикновените типове също се считат за прости нулируеми типове:

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

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


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

Връща информация дали съществува тип съюз.

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


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

Връща дали o е тип пресичане.


```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'); // nebo '?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

Връща дали типът е прост тип. Обикновените типове също се считат за прости нулируеми типове:

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

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

isUnion(): bool

Връща информация дали съществува тип съюз.

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

isIntersection(): bool

Връща дали o е тип пресичане.

$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