cvs: phpdoc /en/language/oop5 typehinting.xml

From: Date: Sun, 03 Oct 2004 05:07:04 +0000
Subject: cvs: phpdoc /en/language/oop5 typehinting.xml
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969364390@lists.php.net to get a copy of this message
aidan Sun Oct 3 01:07:04 2004 EDT Modified files: /phpdoc/en/language/oop5 typehinting.xml Log: Added more information and made the examples easier to understand http://cvs.php.net/diff.php/phpdoc/en/language/oop5/typehinting.xml?r1=1.1&r2=1.2&ty=u Index: phpdoc/en/language/oop5/typehinting.xml diff -u phpdoc/en/language/oop5/typehinting.xml:1.1 phpdoc/en/language/oop5/typehinting.xml:1.2 --- phpdoc/en/language/oop5/typehinting.xml:1.1 Sun Oct 3 00:36:35 2004 +++ phpdoc/en/language/oop5/typehinting.xml Sun Oct 3 01:07:04 2004 @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.1 $ --> +<!-- $Revision: 1.2 $ --> <sect1 id="language.oop5.typehinting"> <title>Type Hinting</title> <para> - PHP 5 introduces Type Hinting. Methods are now able to force parameters + PHP 5 introduces Type Hinting. Functions are now able to force parameters to be objects by specifying the name of the class in the function prototype. </para> @@ -12,6 +12,7 @@ <programlisting role="php"> <![CDATA[ <?php +// An example class class MyClass { /** @@ -24,29 +25,70 @@ } } +// Another example class class OtherClass { public $var = 'Hello World'; } - +?> +]]> + </programlisting> + <para> + Failing to satisfy the type hint results in a fatal error. + </para> + <programlisting role="php"> +<![CDATA[ +<?php +// An instance of each class $myclass = new MyClass; +$otherclass = new OtherClass; -// These are fatal errors -// Argument 1 must be an object of class OtherClass +// Fatal Error: Argument 1 must be an object of class OtherClass $myclass->test('hello'); -// Argument 1 must be an instance of OtherClass + +// Fatal Error: Argument 1 must be an instance of OtherClass $foo = new stdClass; $myclass->test($foo); -// Argument 1 must not be null + +// Fatal Error: Argument 1 must not be null $myclass->test(null); -// This is fine -$foo = new OtherClass; -// Prints Hello World -$myclass->test($foo); -?> +// Works: Prints Hello World +$myclass->test($otherclass); +?> +]]> + </programlisting> + <para> + Type hinting also works with functions: + </para> + <programlisting role="php"> +<![CDATA[ +<?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); +?> ]]> </programlisting> </example> + <para> + Type Hints can only be of the <type>object</type> type. Traditional + type hinting with <type>int</type> and <type>string</type> are not + supported. + </para> </sect1> <!-- Keep this comment at the end of the file

« previous php.doc (#969364390) next »