PHP-Typ

Nette\Utils\Type ist eine PHP-Datentypklasse.

Installation:

composer require nette/utils

Alle Beispiele gehen davon aus, dass der folgende Klassenalias definiert ist:

use Nette\Utils\Type;

fromReflection($reflection): ?Type

Die statische Methode erzeugt ein Type-Objekt auf der Grundlage von Reflexion. Der Parameter kann ein ReflectionMethod oder ReflectionFunction Objekt sein (gibt den Typ des Rückgabewerts zurück) oder ein ReflectionParameter oder ReflectionProperty Objekt. Löst self, static und parent in den tatsächlichen Klassennamen auf. Wenn das Subjekt keinen Typ hat, wird null zurückgegeben.

class DemoClass
{
	public self $foo;
}

$prop = new ReflectionProperty(DemoClass::class, 'foo');
echo Type::fromReflection($prop); // 'DemoClass'

fromString(string $type): Type

Die statische Methode erstellt das Type-Objekt gemäß der Textnotation.

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

getNames(): (string|array)[]

Gibt das Array der Subtypen, aus denen der zusammengesetzte Typ besteht, als Strings zurück.

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

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

getTypes(): Type[]

Gibt das Array der Subtypen, aus denen sich der zusammengesetzte Typ zusammensetzt, als Type Objekte zurück:

$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

Gibt den Typnamen für einfache Typen zurück, ansonsten 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 ein einfacher Typ ist. Einfache nullbare Typen werden ebenfalls als einfache Typen betrachtet:

$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

Gibt zurück, ob es ein Union-Typ ist.

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

isIntersection(): bool

Gibt zurück, ob es sich um einen Schnittpunkt-Typ handelt.

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

isBuiltin(): bool

Gibt zurück, ob der Typ sowohl ein einfacher als auch 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 sowohl ein einfacher als auch 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

Ermittelt, 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() prüft die Typkompatibilität. So kann beispielsweise geprüft werden, ob ein Wert eines bestimmten Typs als Parameter übergeben werden kann.

$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