Type PHP

Nette\Utils\Type est une classe pour travailler avec les types de données PHP.

Installation :

composer require nette/utils

Tous les exemples supposent qu'un alias a été créé :

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 (retourne le type de retour) ou ReflectionParameter ou ReflectionProperty. Traduit self, static et parent en nom de classe réel. Si le sujet n'a pas de type, retourne 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 un objet Type selon la notation textuelle.

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

getNames (): (string|array)[]

Retourne un tableau de sous-types dont est composé le type composé, comme des chaînes.

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

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

getTypes(): Type[]

Retourne un tableau de sous-types dont est composé le type composé, comme des objets ReflectionType :

$type = Type::fromString('string|null'); // ou '?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

Pour les types simples, retourne le nom du type, 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. Sont considérés comme des types simples aussi les types simples nullable :

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

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

isUnion(): bool

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

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

isIntersection(): bool

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

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

isBuiltin(): bool

Retourne si le type est simple et en même temps un type intégré de 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

Retourne si le type est simple et en même temps 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

Retourne 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 déterminer si une valeur d'un certain type pourrait être passée comme 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
version: 4.0