Section 8.9. Class Type Hints


8.9. Class Type Hints

Although PHP remains a loosely typed languagewhich means that properties are not explicitly either string, integer, or booleanPHP 5 introduces class type hints, which allow you to specify what class of object should be passed into a method. These are not required, and are also not checked until the script is actually run; they aren't strict, by any means. Furthermore, they only work for classes right nowyou can't specify, for example, that a parameter should be an integer or a string. Having said that, future versions will likely introduce the ability to request that arrays be passed in.

Here is an example of a type hint in action:

     class Dog {             public function do_drool( ) {                     echo "Sluuuuurp\n";             }     }     class Cat { }     function drool(Dog $some_dog) {             $some_dog->do_drool( );     }     $poppy = new Cat( );     drool($poppy); 

The drool( ) method will accept one parameter, $some_dog, but that parameter name is preceded by the class hintI have specified that it should only accept a parameter of type Dog. In the example, I have made $poppy a Cat object, and that will give the following output:

     Fatal error: Argument 1 must be an instance of dog in C:\home\classhint.php     on line 12 

Providing a class hint for a class type that does not exist will cause a fatal error. Class hints are essentially a way for you to skip having to use the instanceof keyword again and again to verify that your methods have received the right kind of objects. Using a class hint is essentially an implicit call to instanceof, without the extra code.

As with the instanceof keyword, you can specify an interface as the class hint, and only classes that interface will be allowed through.




PHP in a Nutshell
Ubuntu Unleashed
ISBN: 596100671
EAN: 2147483647
Year: 2003
Pages: 249

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net