PHP Portal » PHP Handbuch » Type Hinting

Werbung

Type Hinting


PHP 5 führt Type Hinting ein. Funktionen sind damit fähig, Parameter zu zwingen, Objekte (indem man den Namen der Klasse im Funktionsprototyp spezifiziert) oder Arrays (seit PHP 5.1) zu sein. Wird dabei NULL als Vorgabewert für einen Parameter angegeben so ist dies ein weiterer gültiger Aufrufwert neben dem spezifizierten Typ.

PHP Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Eine Beispielklasse class MyClass { /** * Eine Testfunktion * * Der erste Parameter muss ein Objekt des Typs OtherClass sein */ public function test(OtherClass $otherclass) { echo $otherclass->var; } /** * Eine weitere Testfunktion * * Der erste Parameter muss ein Array sein */ public function test_array(array $input_array) { print_r($input_array); } } // Eine weitere Beispielklasse class OtherClass { public $var = 'Hallo Welt'; }

Wird der Type Hint nicht erfüllt, führt dies zu einem abfangbaren fatalen Fehler.

PHP Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Eine Instanz jeder Klasse $myclass = new MyClass; $otherclass = new OtherClass; // Fatal Error: Argument 1 must be an object of class OtherClass $myclass->test('hello'); // Fatal Error: Argument 1 must be an instance of OtherClass $foo = new stdClass; $myclass->test($foo); // Fatal Error: Argument 1 must not be null $myclass->test(null); // Funktionier: Gibt Hallo Welt aus $myclass->test($otherclass); // Fatal Error: Argument 1 must be an array $myclass->test_array('a string'); // Funktioniert: Gibt das Array aus $myclass->test_array(array('a', 'b', 'c'));

Type Hinting funktioniert ebenfalls mit Methoden

PHP Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Eine Beispielklasse class MyClass { public $var = 'Hallo Welt'; } /** * Eine Testfunktion * * Der erste Parameter muss ein Objekt vom Typ MyClass sein */ function MyFunction(MyClass $foo) { echo $foo->var; } // Funktioniert $myclass = new MyClass; MyFunction($myclass);

Type hinting mit möglichen NULL Werten:

PHP Code
1
2
3
4
5
/* Akzeptiert NULL Werte */ function test(stdClass $obj = NULL) { } test(NULL); test(new stdClass);

Type Hints können nur vom Typen object und (seit PHP 5.1) array sein. Traditionelles Type Hinting mit int und string wird nicht unterstützt.