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 ReflectionType-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
Version: 4.0