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

 ID:               51803
 Updated by:       dtajchre...@php.net
 Reported by:      kherge at me dot com
 Summary:          Interface implementation silently fails
-Status:           Feedback
+Status:           Bogus
 Type:             Bug
 Package:          Reproducible crash
 Operating System: Windows XP SP3
 PHP Version:      5.3.2

 New Comment:

Closing as bogus.


Previous Comments:
------------------------------------------------------------------------
[2010-05-12 22:43:48] dtajchre...@php.net

Ditto on reproducing it.



C:\Documents and Settings\David\Desktop\php-5.3.2-Win32-VC6-x86>php
..\test.php



Fatal error: Access level to MyClass::_test() must be public (as in
class MyInte

rface) in C:\Documents and Settings\David\Desktop\test.php on line 9



C:\Documents and Settings\David\Desktop\php-5.3.2-Win32-VC6-x86>echo
%ERRORLEVEL%

255



I think it's a configuration issue on your end. Check your error
log/display error settings. Your class has to implement the method the
way that the interface describes it. Your interface defaults to public
for _test() and test() but you alter that.. a simpler test case:



class A implements Iterator {

 private function next() { }

}



should yield the same error as in your example.

------------------------------------------------------------------------
[2010-05-12 22:09:18] kherge at me dot com

Error reporting is currently set to 32767 (E_ALL | E_STRICT).

------------------------------------------------------------------------
[2010-05-12 22:05:32] dtajchre...@php.net

Do you have error reporting settings at the right level.. display
errors? I get a nice fatal error as expected..



da...@beirut:~$ php test.php 

PHP Fatal error:  Access level to MyClass::_test() must be public (as in
class MyInterface) in /home/david/test.php on line 9



Fatal error: Access level to MyClass::_test() must be public (as in
class MyInterface) in /home/david/test.php on line 9

da...@beirut:~$ echo $?

255

------------------------------------------------------------------------
[2010-05-12 21:55:55] kherge at me dot com

Description:
------------
Running the test script, PHP silently exists with the error code 255. 
If you 

remove the protected access type from the _test() function in the
MyClass class, 

the script executes normally.

Test script:
---------------
<?php



    interface MyInterface

    {

        function _test ( );

        function test ( );

    }

    class MyClass implements MyInterface

    {

        protected function _test ( )

        {

            echo 'My _test() function', "\n";

        }

        public function test ( )

        {

            self::_test( );

        }

    }



    MyClass::test( );

Expected result:
----------------
Output: "My _test() function"

Actual result:
--------------
PHP exits with %ERRORLEVEL% = 255


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



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

Reply via email to