Type hints revisited [IllegalArgumentException instead of E_ERROR]

From: Date: Thu, 27 Mar 2003 16:16:04 +0000
Subject: Type hints revisited [IllegalArgumentException instead of E_ERROR]
Groups: php.internals 
Request: Send a blank email to internals+get-368@lists.php.net to get a copy of this message
I've implemented an additional feature for type hints that will throw an exception instead of bailing out in case an incorrect type is passed. Test script: <?php class Date { } class Article { public function setCreated_at(Date $date) { echo __CLASS__, '::', __FUNCTION__, ' called with '; var_export($date); echo "\n"; } public function setLastchange([Date] $date) { echo __CLASS__, '::', __FUNCTION__, ' called with '; var_export($date); echo "\n"; } } $a= new Article(); $a->setLastchange(new Date()); $a->setLastchange(NULL); // Passes $a->setCreated_at(new Date()); try { $a->setCreated_at(NULL); // Fails } catch (IllegalArgumentException $e) { echo "Caught: "; var_dump($e); } $a->setCreated_at(1); // Fails echo "Alive"; // Will not show up ?> Output: --------------------------------------------------------------------- thekid@friebes:~/devel/php > ./php5/sapi/cli/php hints.php article::setlastchange called with class date { } article::setlastchange called with NULL article::setcreated_at called with class date { } Caught: object(illegalargumentexception)#2 (3) { ["message"]=> string(38) "Argument 1 must be an instance of date" ["file"]=> string(36) "/usr/home/thekid/devel/php/hints.php" ["line"]=> int(4) } Fatal error: Uncaught exception! in Unknown on line 0 --------------------------------------------------------------------- A unified diff is attached. - Timm

Attachment: [text/x-patch] zend_hints.diff
« previous php.internals (#368) next »