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); // Fails echo "Alive"; // Will not show up ?>
Output: --------------------------------------------------------------------- [EMAIL PROTECTED]:~/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
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php