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'); // або '?string' $type->getNames(); // ['string', 'null'] $type = Type::fromString('(Foo&Bar)|string'); $type->getNames(); // [['Foo', 'Bar'], 'string'] getTypes(): Type[]
Повертає масив підтипів, з яких складається складений тип, як об'єкти Type:
$type = Type::fromString('string|null'); // або '?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
Повертає, чи є тип простим. До простих типів відносяться також прості nullable типи:
$type = Type::fromString('string'); $type->isSimple(); // true $type->isUnion(); // false $type = Type::fromString('?Foo'); // або 'Foo|null' $type->isSimple(); // true $type->isUnion(); // true isUnion(): bool
Повертає, чи є тип union типом.
$type = Type::fromString('string|int'); $type->isUnion(); // true isIntersection(): bool
Повертає, чи є тип intersection типом.
$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