typehinting and NULL
| From: | Marcus Boerger | Date: | Wed, 21 Apr 2004 10:03:21 +0000 |
| Subject: | typehinting and NULL | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-9450@lists.php.net to get a copy of this message | ||
Hello Andi, Zeev, internals,
after readin the PHP articles on PHP5 and the rerequested typehinting
for arrays i once again thought about typehints and NULL.
At the moment typehints allow NULL always. That is complete nonsense
because NULL doesn't pass any instance-of check. And in general there
is only one operation that leagally returns true when working with NULL
values. That is NULL === NULL. In php NULL == NULL simply returns true
because NULL equals zero. Hence:
$ php -r 'var_dump(NULL == NULL);'
bool(true)
$ php -r 'var_dump(NULL == 0);'
bool(true)
$ php -r 'var_dump(NULL === NULL);'
bool(true)
AND:
$ php -r '$o=new stdClass; var_dump($o instanceof stdClass);'
bool(true)
$ php -r 'var_dump(NULL instanceof stdClass);'
bool(false)
At least we must find a way to decide whether or not NULL should be allowed
NULL. Yes enforcing NOL NULL would make too many people complain they cannot
pass a NULL by ref to have it returned as an instance of the class - though
reconsider your code should be the answer here. Looking up the discussions
about the issue we already had a solution for this from Zeev.
function allowingNULL(object $val = NULL)
function preventNULL(object $val)
any thoughts?
Just to stress out: The current situation doesn't respect generally accepted
inheritance rules.
Best regards,
Marcus