Nette Documentation Preview

syntax
PHP-Typ
*******

.[perex]
[api:Nette\Utils\Type] ist eine PHP-Datentypklasse.


Installation:

```shell
composer require nette/utils
```

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

```php
use Nette\Utils\Type;
```


fromReflection($reflection): ?Type .[method]
--------------------------------------------

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.

```php
class DemoClass
{
	public self $foo;
}

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


fromString(string $type): Type .[method]
----------------------------------------

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

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


getNames(): (string|array)[] .[method]
--------------------------------------

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

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

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


getTypes(): Type[] .[method]
----------------------------

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

```php
$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 .[method]
----------------------------------

Gibt den Typnamen für einfache Typen zurück, ansonsten null.

```php
$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 .[method]
--------------------------

Gibt zurück, ob es ein einfacher Typ ist. Einfache nullbare Typen werden ebenfalls als einfache Typen betrachtet:

```php
$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 .[method]
-------------------------

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

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


isIntersection(): bool .[method]
--------------------------------

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


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


isBuiltin(): bool .[method]
---------------------------

Gibt zurück, ob der Typ sowohl ein einfacher als auch ein eingebauter PHP-Typ ist.

```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 .[method]
-------------------------

Gibt zurück, ob der Typ sowohl ein einfacher als auch ein Klassenname ist.

```php
$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 .[method]
--------------------------------

Ermittelt, ob der Typ einer der internen Typen `self`, `parent`, `static` ist.

```php
$type = Type::fromString('self');
$type->isClassKeyword();   // true

$type = Type::fromString('Foo');
$type->isClassKeyword();   // false
```


allows(string $type): bool .[method]
------------------------------------

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.

```php
$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
```

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