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
Marcus Boerger wrote:
function allowingNULL(object $val = NULL)
function preventNULL(object $val)
I like this idea even though it's abusing the default value syntax.
What's a bit weird is something like
function foo(object $obj = NULL, $mandatoryparameter) { ... }
where people will wonder why there is a default value even though they
can't omit the parameter really. But personally I could live with that.
- Chris
I wanted to support:
function preventNULL($val not NULL)
function allowNULL($val)
However, I left it for after 5.0.0 due to the feature freeze. Note, that it
will also not change today's semantics.
Andi
At 12:15 PM 4/21/2004 +0200, Christian Schneider wrote:
Marcus Boerger wrote:
function allowingNULL(object $val = NULL)
function preventNULL(object $val)I like this idea even though it's abusing the default value syntax.
What's a bit weird is something like
function foo(object $obj = NULL, $mandatoryparameter) { ... }
where people will wonder why there is a default value even though they
can't omit the parameter really. But personally I could live with that.
- Chris
Hello Andi,
sounds like a great idea, maybe even the best one.
marcus
Wednesday, April 21, 2004, 12:25:15 PM, you wrote:
I wanted to support:
function preventNULL($val not NULL)
function allowNULL($val)
However, I left it for after 5.0.0 due to the feature freeze. Note, that it
will also not change today's semantics.
Andi
At 12:15 PM 4/21/2004 +0200, Christian Schneider wrote:
Marcus Boerger wrote:
function allowingNULL(object $val = NULL)
function preventNULL(object $val)I like this idea even though it's abusing the default value syntax.
What's a bit weird is something like
function foo(object $obj = NULL, $mandatoryparameter) { ... }
where people will wonder why there is a default value even though they
can't omit the parameter really. But personally I could live with that.
- Chris
--
Best regards,
Marcus mailto:helly@php.net