mirror of
https://github.com/php/php-src.git
synced 2024-09-21 09:57:23 +00:00
Fixed implementation of internal interfaces in namesapces
This commit is contained in:
parent
4b731b1af0
commit
98b3c247a8
31
Zend/tests/ns_054.phpt
Executable file
31
Zend/tests/ns_054.phpt
Executable file
@ -0,0 +1,31 @@
|
||||
--TEST--
|
||||
054: namespace and interfaces
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) die("skip SPL is no available"); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
namespace test::ns1;
|
||||
|
||||
class Foo implements SplObserver {
|
||||
function update(::SplSubject $x) {
|
||||
echo "ok\n";
|
||||
}
|
||||
}
|
||||
|
||||
class Bar implements SplSubject {
|
||||
function attach(::SplObserver $x) {
|
||||
echo "ok\n";
|
||||
}
|
||||
function notify() {
|
||||
}
|
||||
function detach(::SplObserver $x) {
|
||||
}
|
||||
}
|
||||
$foo = new Foo();
|
||||
$bar = new Bar();
|
||||
$bar->attach($foo);
|
||||
$foo->update($bar);
|
||||
?>
|
||||
--EXPECT--
|
||||
ok
|
||||
ok
|
@ -3136,7 +3136,7 @@ void zend_do_implements_interface(znode *interface_name TSRMLS_DC)
|
||||
if (CG(active_op_array)->last > 0) {
|
||||
opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
|
||||
if (opline->opcode == ZEND_FETCH_CLASS) {
|
||||
opline->extended_value = ZEND_FETCH_CLASS_INTERFACE;
|
||||
opline->extended_value = (opline->extended_value & ~ZEND_FETCH_CLASS_MASK) | ZEND_FETCH_CLASS_INTERFACE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user