Nette Documentation Preview

syntax
Type de PHP
***********

.[perex]
[api:Nette\Utils\Type] est une classe de type de données PHP.


Installation :

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

Tous les exemples supposent que l'alias de classe suivant est défini :

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


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

La méthode statique crée un objet Type basé sur la réflexion. Le paramètre peut être un objet `ReflectionMethod` ou `ReflectionFunction` (renvoie le type de la valeur de retour) ou un objet `ReflectionParameter` ou `ReflectionProperty`. Résout `self`, `static` et `parent` au nom de la classe réelle. Si l'objet n'a pas de type, elle renvoie `null`.

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

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


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

La méthode statique crée l'objet Type selon la notation du texte.

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


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

Renvoie le tableau des sous-types qui composent le type composé sous forme de chaînes de caractères.

```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]
----------------------------

Renvoie le tableau des sous-types qui composent le type composé sous forme d'objets `Type`:

```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]
----------------------------------

Renvoie le nom du type pour les types simples, sinon 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]
--------------------------

Retourne s'il s'agit d'un type simple. Les types simples annulables sont également considérés comme des types simples :

```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]
-------------------------

Indique s'il s'agit d'un type d'union.

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


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

Indique s'il s'agit d'un type d'intersection.


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


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

Retourne si le type est à la fois un type simple et un type intégré 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]
-------------------------

Indique si le type est à la fois simple et un nom de classe.

```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]
--------------------------------

Détermine si le type est l'un des types internes `self`, `parent`, `static`.

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

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


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

La méthode `allows()` vérifie la compatibilité des types. Par exemple, elle permet de vérifier si une valeur d'un certain type peut être passée en paramètre.

```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
```

Type de PHP

Nette\Utils\Type est une classe de type de données PHP.

Installation :

composer require nette/utils

Tous les exemples supposent que l'alias de classe suivant est défini :

use Nette\Utils\Type;

fromReflection($reflection): ?Type

La méthode statique crée un objet Type basé sur la réflexion. Le paramètre peut être un objet ReflectionMethod ou ReflectionFunction (renvoie le type de la valeur de retour) ou un objet ReflectionParameter ou ReflectionProperty. Résout self, static et parent au nom de la classe réelle. Si l'objet n'a pas de type, elle renvoie null.

class DemoClass
{
	public self $foo;
}

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

fromString(string $type): Type

La méthode statique crée l'objet Type selon la notation du texte.

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

getNames(): (string|array)[]

Renvoie le tableau des sous-types qui composent le type composé sous forme de chaînes de caractères.

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

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

getTypes(): Type[]

Renvoie le tableau des sous-types qui composent le type composé sous forme d'objets Type:

$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

Renvoie le nom du type pour les types simples, sinon 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

Retourne s'il s'agit d'un type simple. Les types simples annulables sont également considérés comme des types simples :

$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

Indique s'il s'agit d'un type d'union.

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

isIntersection(): bool

Indique s'il s'agit d'un type d'intersection.

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

isBuiltin(): bool

Retourne si le type est à la fois un type simple et un type intégré 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

Indique si le type est à la fois simple et un nom de classe.

$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

Détermine si le type est l'un des types internes self, parent, static.

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

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

allows(string $type): bool

La méthode allows() vérifie la compatibilité des types. Par exemple, elle permet de vérifier si une valeur d'un certain type peut être passée en paramètre.

$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