PHP Typ
Nette\Utils\Type ist eine Klasse für die Arbeit mit PHP-Datentypen.
Installation:
composer require nette/utils
Alle Beispiele setzen voraus, dass ein Alias erstellt wurde:
use Nette\Utils\Type;
fromReflection ($reflection): ?Type
Die statische Methode erstellt ein Type-Objekt basierend auf der Reflexion. Der Parameter kann ein
ReflectionMethod- oder ReflectionFunction-Objekt sein (gibt den Rückgabetyp zurück) oder
ReflectionParameter oder ReflectionProperty. Übersetzt self, static und
parent in den tatsächlichen Klassennamen. Wenn das Subjekt keinen Typ hat, gibt es null zurück.
class DemoClass
{
public self $foo;
}
$prop = new ReflectionProperty(DemoClass::class, 'foo');
echo Type::fromReflection($prop); // 'DemoClass'
fromString (string $type): Type
Die statische Methode erstellt ein Type-Objekt gemäß der Textnotation.
$type = Type::fromString('Foo|Bar');
echo $type; // 'Foo|Bar'
getNames (): (string|array)[]
Gibt ein Array der Subtypen zurück, aus denen sich der zusammengesetzte Typ zusammensetzt, als Strings.
$type = Type::fromString('string|null'); // oder '?string'
$type->getNames(); // ['string', 'null']
$type = Type::fromString('(Foo&Bar)|string');
$type->getNames(); // [['Foo', 'Bar'], 'string']
getTypes(): Type[]
Gibt ein Array der Subtypen zurück, aus denen sich der zusammengesetzte Typ zusammensetzt, als Type-Objekte:
$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
Bei einfachen Typen gibt es den Typnamen zurück, andernfalls 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
Gibt zurück, ob es sich um einen einfachen Typ handelt. Als einfache Typen gelten auch einfache nullable Typen:
$type = Type::fromString('string');
$type->isSimple(); // true
$type->isUnion(); // false
$type = Type::fromString('?Foo'); // oder 'Foo|null'
$type->isSimple(); // true
$type->isUnion(); // true
isUnion(): bool
Gibt zurück, ob es sich um einen Union-Typ handelt.
$type = Type::fromString('string|int');
$type->isUnion(); // true
isIntersection(): bool
Gibt zurück, ob es sich um einen Intersection-Typ handelt.
$type = Type::fromString('Foo&Bar');
$type->isIntersection(); // true
isBuiltin(): bool
Gibt zurück, ob der Typ einfach und gleichzeitig ein eingebauter PHP-Typ ist.
$type = Type::fromString('string');
$type->isBuiltin(); // true
$type = Type::fromString('string|int');
$type->isBuiltin(); // false
$type = Type::fromString('Foo');
$type->isBuiltin(); // false
isClass(): bool
Gibt zurück, ob der Typ einfach und gleichzeitig ein Klassenname ist.
$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
Gibt zurück, ob der Typ einer der internen Typen self, parent, static ist.
$type = Type::fromString('self');
$type->isClassKeyword(); // true
$type = Type::fromString('Foo');
$type->isClassKeyword(); // false
allows (string $type): bool
Die Methode allows() überprüft die Typkompatibilität. Zum Beispiel ermöglicht sie festzustellen, ob ein Wert
eines bestimmten Typs als Parameter übergeben werden könnte.
$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