Bug #68041 [NEW]: Interfaces - Interfaced instance can access undefined methods
| From: | sosingus at gmail dot com | Date: | Thu, 18 Sep 2014 09:47:34 +0000 |
| Subject: | Bug #68041 [NEW]: Interfaces - Interfaced instance can access undefined methods | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-187584@lists.php.net to get a copy of this message | ||
From: sosingus at gmail dot com
Operating system: Linux
PHP version: 5.4.32
Package: *General Issues
Bug Type: Bug
Bug description:Interfaces - Interfaced instance can access undefined methods
Description:
------------
If we use interfaced instance to access a method not defined in
interface itself, code will work! Expected is RuntimeException of some
kind.
Same applies for using parent class on instance of some subclass. If
anyone cares I'll serach and create similar bug report for classes.
This behavior can lead to serious problems in any serious OO code. Worst
of all it cannot be predicted in any way.
I think this is a system issue and probably exists since the OO
beginning in php.
Test script:
---------------
<?php
interface TestInterface
{
public function printMe();
}
class TestClass implements TestInterface
{
public function printMe()
{
print "1\n";
}
public function printMeToo()
{
print "2\n";
}
}
function testInterfaceShouldFail(TestInterface $instance)
{
$instance->printMe();
$instance->printMeToo();
}
testInterfaceShouldFail(new TestClass());
Expected result:
----------------
raised/thrown RuntimeException
Actual result:
--------------
1
2
--
Edit bug report at https://bugs.php.net/bug.php?id=68041&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=68041&r=trysnapshot54
Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=68041&r=trysnapshot55
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=68041&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=68041&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=68041&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=68041&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=68041&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=68041&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=68041&r=support
Expected behavior: https://bugs.php.net/fix.php?id=68041&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=68041&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=68041&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=68041&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=68041&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=68041&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=68041&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=68041&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=68041&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=68041&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=68041&r=mysqlcfg