Re: Type hints with null default values
| From: | Cristiano Duarte | Date: | Fri, 22 Oct 2004 17:36:57 +0000 |
| Subject: | Re: Type hints with null default values | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-13470@lists.php.net to get a copy of this message | ||
Marcus Boerger wrote:
> Hello Robert,
>
> Tuesday, October 19, 2004, 10:20:59 PM, you wrote:
>
>> The issues surrounding this seemed to have been muddied up a little, I'll
>> try to clear them up.
>
>> I see two different sets of functionality that people are asking for.
>
>> #1. The ability to pass null on a type hinted param (but still a
>> #mandatory
>> param)
>
>> #2. The ability to define an optional type hinted param.
>
>> I see it as a very important distinction to make. Using the #2 to solve
>> #1 is not the solution PHP should implement. Using some method which
>> operates on the class hint itself is the right solution.
>
>> For example, using the [] method:
>
>> public function Compare([BaseClass] $objA, $cmpFunc);
>
> As far as we disallow this and only allow optional types at the end i'd
> agre to this. Example:
>
> public function Compare($cmpFunc, [BaseClass] $objA);
>
I don't see any danger if we allow null with this syntax:
public function Compare([BaseClass] $objA, $cmpFunc);
if we don't allow null with this syntax:
public function Compare(BaseClass $objA, $cmpFunc);
and if we make an argument optional with this syntax:
public function Compare($cmpFunc, BaseClass $objA=null);
If someone (like me) has thousands lines of code that uses 'null' meaning
'null reference' just need to use syntax #1.
If someone is very strict and don't even think about using null in
typehinted arguments, because null is not a value it's a type and must be
used as so, just need to use syntax #2.
If someone wants to make typehinted parameters optional, just use syntax #3.
I really don't see any problem allowing this three syntaxes(but I'm not very
clever since I'm for syntax #1) :-P
Regards,
Cristiano Duarte