|
Posted by Jerry Stuckle on 01/13/08 03:32
seaside wrote:
> On 13 Jan., 04:00, "Rik Wasmus" <luiheidsgoe...@hotmail.com> wrote:
>> On Sun, 13 Jan 2008 03:50:33 +0100, seaside <seaside...@mac.com> wrote:
>>> I have a method
>>> function appendChildNode( AST $aNewChild ) {
>>> ...
>>> }
>>> <<<
>>> where AST is a class. If I pass null, PHP renders this message:
>>> Catchable fatal error: Argument 1 passed to AST::appendChildNode()
>>> must be an instance of AST, null given, called in /Applications/MAMP/
>>> htdocs/compile/includes/CParser.inc.php(517) : eval()'d code on line 1
>>> and defined in /Applications/MAMP/htdocs/compile/includes/AST.inc.php
>>> on line 43
>>> <<<
>>> Any ideas, why I can't pass a null value?
>> For some reason:
>>
>> function appendChildNode( AST $aNewChild = NULL ) {
>>
>> }
>>
>
> But now, I can call it 'legally' with no parameters, which I don't
> want.
> At least any reader would think, 'OK, passing no value is OK'.
>
> Do we have other options?
>
> Additionally: I'll go into details of the code soon, but does the
> default value make to
> exception disappear, since I passed no value at all to appendChildNode?
>
As Rik pointed out, type hinting is a somewhat inconsistent operation in
PHP. But this a new area for PHP, and I'm not sure it's been entirely
thought out yet (as seems to be with a lot of things in PHP).
Of course, you could not use type hinting. Instead, you can use
instanceof() in the function itself to ensure you have an instance of
the object. This way you can check for null, also.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
[Back to original message]
|