Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

#26780 [Com]: Undefined variables cause type hints to become useless

0 views
Skip to first unread message

php at kaiundina dot de

unread,
Aug 25, 2004, 5:21:03 PM8/25/04
to
ID: 26780
Comment by: php at kaiundina dot de
Reported By: jebmc at iprimus dot com dot au
Status: Suspended
Bug Type: Zend Engine 2 problem
Operating System: *
PHP Version: 5.0.*
New Comment:

I've a similar problem related to optional parameters. Since
null-values are not accepted for parameters using type-hints, it seems
to be impossible to create optional parameters!

following case:

<?php
class Foo
{
}

function myFunc($param1, Foo $bar = null)
{
echo $param1;
}

myFunc('This is a test');
?>

doesn't work and results in:
Fatal error: Argument 2 must not be null in
C:\Projekte\www\test\typehints.php5 on line 6

the following workaround I tried is also disallowed:
$x = new Foo();
function myFunc($param1, Foo $bar = $x)
and results in:
Parse error: parse error, unexpected T_VARIABLE in
C:\Projekte\www\test\typehints.php5 on line 8


I think type hints should pass null-values like it is in Java and C#
for allowance of optional object parameters.

On the other hand 'is_a()' and 'instanceof' should return false, to
have a chance to determine if an object is capable of doing specific
operations.

Just my point of view ;)

Let me know, if things change... thanks


Previous Comments:
------------------------------------------------------------------------

[2004-01-04 05:12:13] he...@php.net

The undefined variable is a NULL value when passed to the functionand
at the moment type hints accept NULL values. I strongly disagreee here
and we are still discussing about a notation to decide whether to
accpet or block NULL values with type hints.

------------------------------------------------------------------------

[2004-01-04 02:00:15] jebmc at iprimus dot com dot au

Description:
------------
If you pass an undefined variable as the value of a type-hinted
argument, the type-hint checking appears to be skipped. Rather, a
notice error is printed for the undefined variable (as it should be)
and the function or method happily continues on.

Reproduce code:
---------------
<?php
class Foo
{
}

function myFunc($param1, Foo $bar)
{
echo $param1;
}

myFunc('This is a test',$badVariable);
?>

Expected result:
----------------
"Notice: Undefined variable: badVariable in foo.php on line 11

Fatal error: Argument 2 must be an object of class foo in foo.php on
line 6"

Actual result:
--------------
"Notice: Undefined variable: badVariable in foo.php on line 11
This is a test"


------------------------------------------------------------------------


--
Edit this bug report at http://bugs.php.net/?id=26780&edit=1

0 new messages