ID:               46373
 Updated by:       [EMAIL PROTECTED]
 Reported By:      phpbugs at sevenlight dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         Scripting Engine problem
 Operating System: OSX 10.5.5
 PHP Version:      5.3CVS-2008-10-23 (snap)
 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php




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

[2008-10-23 18:50:07] phpbugs at sevenlight dot com

Description:
------------
Using a type-hint with a namespace does not work.  It allows an object
of a different class to be passed, and even allows a bogus namespace to
be used.  It will also allow null variables, and will pass through any
value, no matter what class type-hinting you use.

Unfortunately, in my simplest test cases I have not been able to
reproduce it, it is only in my larger project that it causes this
problem.

I really don't know where to start with this, and how to duplicate it. 
Needless to say,  have provided the failing code from my project.  The
entire project is several thousand lines of code.  And I've really done
my best to track down the problem, even using the 5.3-alpha3-dev.

I'll include the code that causes the problem.

I really don't know what's wrong, and why it is doing it.  Any hints as
to what I might be able to do to try to reproduce this in a simpler way
would be nice, but I really don't know where to go from here.

Reproduce code:
---------------
<?php
namespace MyNamespace;

class MyClass
{
    // execute
    public function execute()
    {
        $this->test(NULL);
        return $this->_execute($this->_mc);
    }
    
    protected function test(MyBogusNamespace::MyBogusClass $m)
    {
        $reflect = new ReflectionClass(get_class($this));
        $method = $reflect->getMethod('test');
        echo $method;
        var_export($m);
        echo "\n\nClass: " . get_class($m) . " ==
MyBogusNamespace::MyBogusClass\n\n";
    }
}
?>

Expected result:
----------------
Catchable fatal error: Argument 1 passed to
MyNamespace::MyClass::test() must be an instance of
MyBogusNamespace::MyBogusClass, null given, called in
/srv/www/test/ns/new.php on line 9 and defined in
/srv/www/test/ns/new.php on line 13


Actual result:
--------------
Method [ <user> protected method test ] {
  @@ /srv/spin/spin4/spinnaker/extender/universal/tablelibrary.php 73 -
80

  - Parameters [1] {
    Parameter #0 [ <required> MyBogusNamespace::MyBogusClass $m ]
  }
}
NULL

 == MyBogusNamespace::MyBogusClass



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


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

Reply via email to