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:
---------------------------------------------------------------------
[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



Reply via email to