PHP 5では、タイプヒンティング(Type Hinting)が導入されました。
  これにより、関数は、
  (クラスの名前を関数プロトタイプの中に指定することにより)
  パラメータをオブジェクトもしくは配列
  (PHP5.1以降) が必ず指定されるようにすることができるようになりました。
  
例 19-41. タイプヒンティングの例 
<?php // とあるクラス class MyClass {     /**      * テスト関数      *      * 第 1 引数は OtherClass 型のオブジェクトでなければならない      */     public function test(OtherClass $otherclass) {         echo $otherclass->var;     }
 
      /**      * もう一つのテスト関数      *      * 第 1 引数は配列でなければならない      */     public function test_array(array $input_array) {         print_r($input_array);     } }
  // もう一つのサンプルクラス class OtherClass {     public $var = 'Hello World'; } ?>
 |  
 
   タイプヒントの指定を満たさないと致命的なエラーとなります。
   
<?php // それぞれのクラスのインスタンス $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');
  // 動作する: 配列の内容を表示する $myclass->test_array(array('a', 'b', 'c')); ?>
 |  
 
   タイプヒンティングは、関数でも使用できます。
   
<?php // とあるクラス class MyClass {     public $var = 'Hello World'; }
  /**  * テスト関数  *  * 第 1 引数は MyClass 型のオブジェクトでなければならない  */ function MyFunction (MyClass $foo) {     echo $foo->var; }
  // 動作する $myclass = new MyClass; MyFunction($myclass); ?>
 |  
  | 
  タイプヒントは、object型やarray型
  (PHP5.1以降) でのみ使用できます。
  int および stringのような
  通常の型でのタイプヒンティングはサポートされません。