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
So reading all posts on this subject, the proposal would be:
- Allow null typehints
public function Compare([BaseClass] $objA, $cmpFunc);
Ex: Compare(null, 'func1');
- Don't allow null typehints
public function Compare(BaseClass $objA, $cmpFunc);
Ex: Compare(new BaseClass(), 'func1');
- Optional argument (with typehint)
public function Compare($cmpFunc, BaseClass $objA=null);
Ex: Compare('func1');
Am I right ? Is it possible to implement all three syntaxes ?
IMH it would satisfy everybody's needs.
Regards,
Cristiano Duarte
Hello Cristiano,
Friday, October 22, 2004, 7:41:24 PM, you wrote:
If someone (like me) has thousands lines of code that uses 'null' meaning
'null reference' just need to use syntax #1.
Then you are simply using your PHP tool wrong. PHP is not Java where you
need (and have) null references.
Best regards,
Marcus mailto:helly@php.net