RE: [PHP-DEV] Type hints with null default values
| From: | Robert Silva | Date: | Tue, 19 Oct 2004 02:09:22 +0000 |
| Subject: | RE: [PHP-DEV] Type hints with null default values | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-13379@lists.php.net to get a copy of this message | ||
Based on the issues you listed, how about:
function Method((MyClass) $obj);
function Method([MyClass] $obj);
Surrounding the class type in () or [] thereby marking it as optional.
Much like you would do when commenting a function to take an optional
parameter.
Bob Silva
-----Original Message-----
From: Andi Gutmans [mailto:andi@zend.com]
Sent: Monday, October 18, 2004 6:18 PM
To: Robert Silva; 'Cristiano Duarte'; internals@lists.php.net
Subject: RE: [PHP-DEV] Type hints with null default values
Hi,
First of all, I think most agree that it'd be nice to be able to distinct
between class instances only, and class instances w/ NULL.
However, the main problem was how to specify this in a way which would be
very easy to understand and without over-complicating PHP (I wouldn't want
to add more complexity to the OO language unless really necessary or we'll
loose the ease of use advantage PHP has).
So one suggestion (also made a few months ago) was that the following:
function method(MyClass $obj = NULL);
would mark $obj as allowing NULL parameter.
The problem with it is that it also means that $obj maybe an optional
argument so we would have some ambiguity here.
I don't like the idea of using other values as the default value like
"false" i.e.:
function method(MyClass $obj = false);
because I think it's very un intuitive of what this means. Actually, we
should update the compiler to make sure to not allow optional parameters if
class type hints are being used (except for maybe NULL if we do give it
some kind of meaning).
All in all I haven't been able to think of a good solution/syntax, old
ideas like "MyClass $obj or NULL" are more or less OK but then you can use
a default parameter so it might become "MyClass $obj or NULL = NULL". Yikes!
Andi
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php