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