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