#30090 [Opn->Bgs]: Outside interface method can be called inside method that using the interface
| From: | helly@php.net | Date: | Wed, 15 Sep 2004 06:07:37 +0000 |
| Subject: | #30090 [Opn->Bgs]: Outside interface method can be called inside method that using the interface | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-66189@lists.php.net to get a copy of this message | ||
ID: 30090
Updated by: helly@php.net
Reported By: mikarento at hotmail dot com
-Status: Open
+Status: Bogus
Bug Type: Class/Object related
Operating System: Windows 2000
PHP Version: 5.0.0
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
The object you pass is a ImplClass which has a write method. Your
problem here is that PHP does only dynamic binding and resolving at
runtime unlike for example C++.
Previous Comments:
------------------------------------------------------------------------
[2004-09-15 07:53:23] mikarento at hotmail dot com
Description:
------------
Method who's parameter is object of particular interface should not
invoke other method of its interface.
Reproduce code:
---------------
interface Printable{
public function print();
}
interface Writeable{
public function write($text);
}
class ImplClass implements Printable, Writeable{
public function print(){
return 'hallo'
}
public function write($text){
//...
echo 'written';
}
}
class Printer {
public static function printIt(Printable p){
p->write('wow');
}
}
$a = new ImplClass();
Printer::printIt($a);
// the result is 'written'
Expected result:
----------------
error: Printable object doesn't have 'write' method
Actual result:
--------------
written
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=30090&edit=1