Re: [Zend Engine 2] Type hints revisited [IllegalArgumentException instead of E_ERROR]

From: 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); // 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


« previous php.internals (#371) next »