Re: [Zend Engine 2] Type hints revisited [IllegalArgumentException instead of E_ERROR]
| From: | Andi Gutmans | Date: | Thu, 27 Mar 2003 16:58:03 +0000 |
| Subject: | Re: [Zend Engine 2] Type hints revisited [IllegalArgumentException instead of E_ERROR] | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-371@lists.php.net to get a copy of this message | ||
At 05:16 PM 3/27/2003 +0100, Timm Friebe wrote:
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.I don't see any major advantage in doing this. I think we should keep PHP error handling the same as in PHP 4 and leave exceptions in user-land. Otherwise we'll end up having an unmanageable hybrid because there's no way we're going to change the error-handling of the existing internal functions. The majority of our user base is still functional, please don't forget this. I feel that people here tend to forget that. Andi
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); // Failsecho "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