Example 19-41. Type Hinting examples
| 
<?php// An example class
 class MyClass
 {
 /**
 * A test function
 *
 * First parameter must be an object of type OtherClass
 */
 public function test(OtherClass $otherclass) {
 echo $otherclass->var;
 }
 
 
 /**
 * Another test function
 *
 * First parameter must be an array
 */
 public function test_array(array $input_array) {
 print_r($input_array);
 }
 }
 
 // Another example class
 class OtherClass {
 public $var = 'Hello World';
 }
 ?>
 | 
    Failing to satisfy the type hint results in a fatal error.
   
| 
<?php// An instance of each class
 $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);
 
 // Works: Prints Hello World
 $myclass->test($otherclass);
 
 // Fatal Error: Argument 1 must be an array
 $myclass->test_array('a string');
 
 // Works: Prints the array
 $myclass->test_array(array('a', 'b', 'c'));
 ?>
 | 
    Type hinting also works with functions:
   
| 
<?php// An example class
 class MyClass {
 public $var = 'Hello World';
 }
 
 /**
 * A test function
 *
 * First parameter must be an object of type MyClass
 */
 function MyFunction (MyClass $foo) {
 echo $foo->var;
 }
 
 // Works
 $myclass = new MyClass;
 MyFunction($myclass);
 ?>
 |