Hello Ray, Thursday, June 17, 2004, 3:23:10 PM, you wrote:
> I understand your point, however, this is the way that other languages > behave and its a feature that i consider to be very necessary and > timesaving. In this case PHP behaves like Java very only one pass by reference is allowed. You compare this to C++ and others where pointers exist. And obviously you can set a pointer to NULL. BUT we are talking of pass by reference or pass by value since a PHP pointer is a '$$name' construct. > My understanding was that Typehinting exists to save having > to do such if-else clauses all the time, since 99.9% of the time, you > will expect an object of a certain class or nothing at all. Exactly. And i don't want to have to write function bla(Classname $x) { if (!is_null($x)).... all the time. > The problem > here is that i need only to know that an argument is either an instance > of a class or null, nothing else, but removing the typehinting > effectively means any argument can be passed, and its not longer > enforced at a PHP level, but within my own code... and since this is > something that happens a lot, it seems a shame to loose this handy, > timesaving functionality. I don't think it is timesaving to have to write '!is_null()' all the time. And once again null is not an instance of any class. Last but not least we know already that a lot of people like to be able to handle both instanceof or null with typehints. But at the moment we have no solution that can go into PHP 5.0. However i am quite sure we will address this for 5.1. > Ray > and Marcus Boerger wrote: >>Hello Ray, >> >>Wednesday, June 16, 2004, 4:26:26 PM, you wrote: >> >> >> >>>Hi all, >>> >>> >> >>[....] >> >> - NOTHING stops you from passing NULL to functions. >> - Typhints are a shortcut for an 'instanceof'`test >> >> - now try NULL instanceof stdclass: >> >>php-cvs $ php -r 'var_dump(NULL instanceof stdclass);' >>bool(false) >> >>- what you probablywant is >>function bla($x) { >> if (is_null($x)) { >> // handle null >> } else if ($x instanceof whatever) { >> // handle instance >> } else { >> // handle error >> } >>} >> >>- if you look again you'll see that you are doing *three different* >> things in your code. Typehints have a different usage! >> >>best regards >>marcus >> >> >> -- Best regards, Marcus mailto:[EMAIL PROTECTED] -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php