mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Document change to ReflectionMethod->isConstructor/isDestructor
See https://externals.io/message/109377 This prevented PHPUnit's test doubles from being created for interfaces. The reason this changed is https://github.com/php/php-src/pull/3846/files#diff-3a8139128d4026ce0cb0c86beba4e6b9L5549-R5605 (ReflectionMethod::isConstruct checks if the method is the zend_class_entry's constructor, etc.)
This commit is contained in:
parent
c33e5043a8
commit
630897f996
2 changed files with 132 additions and 1 deletions
|
@ -192,7 +192,7 @@ PHP 8.0 UPGRADE NOTES
|
|||
- dom:
|
||||
. Remove unimplemented classes from ext/dom that had no behavior and contained
|
||||
test data. These classes have also been removed in the latest version of DOM
|
||||
standard:
|
||||
standard:
|
||||
|
||||
* DOMNameList
|
||||
* DomImplementationList
|
||||
|
@ -325,6 +325,9 @@ PHP 8.0 UPGRADE NOTES
|
|||
ReflectionParameter::getDefaultValue()
|
||||
ReflectionParameter::isDefaultValueConstant()
|
||||
ReflectionParameter::getDefaultValueConstantName()
|
||||
. ReflectionMethod::isConstructor() and ReflectionMethod::isDestructor() now
|
||||
also return true for `__construct` and `__destruct` in methods of interfaces.
|
||||
Previously, this would only be true in methods of classes and traits.
|
||||
|
||||
- Socket:
|
||||
. The deprecated AI_IDN_ALLOW_UNASSIGNED and AI_IDN_USE_STD3_ASCII_RULES
|
||||
|
|
|
@ -49,6 +49,14 @@ class DerivedClass extends TestClass {}
|
|||
|
||||
interface TestInterface {
|
||||
public function int();
|
||||
public function __construct($arg);
|
||||
public function __destruct();
|
||||
}
|
||||
|
||||
trait TestTrait {
|
||||
public abstract function __construct();
|
||||
public function __destruct() {
|
||||
}
|
||||
}
|
||||
|
||||
reflectMethod("DerivedClass", "foo");
|
||||
|
@ -59,6 +67,10 @@ reflectMethod("DerivedClass", "prot");
|
|||
reflectMethod("TestInterface", "int");
|
||||
reflectMethod("ReflectionProperty", "__construct");
|
||||
reflectMethod("TestClass", "__destruct");
|
||||
reflectMethod("TestInterface", "__construct");
|
||||
reflectMethod("TestInterface", "__destruct");
|
||||
reflectMethod("TestTrait", "__construct");
|
||||
reflectMethod("TestTrait", "__destruct");
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
|
@ -269,6 +281,122 @@ bool(false)
|
|||
Reflecting on method TestClass::__destruct()
|
||||
|
||||
|
||||
isFinal():
|
||||
bool(false)
|
||||
|
||||
isAbstract():
|
||||
bool(false)
|
||||
|
||||
isPublic():
|
||||
bool(true)
|
||||
|
||||
isPrivate():
|
||||
bool(false)
|
||||
|
||||
isProtected():
|
||||
bool(false)
|
||||
|
||||
isStatic():
|
||||
bool(false)
|
||||
|
||||
isConstructor():
|
||||
bool(false)
|
||||
|
||||
isDestructor():
|
||||
bool(true)
|
||||
|
||||
**********************************
|
||||
**********************************
|
||||
Reflecting on method TestInterface::__construct()
|
||||
|
||||
|
||||
isFinal():
|
||||
bool(false)
|
||||
|
||||
isAbstract():
|
||||
bool(true)
|
||||
|
||||
isPublic():
|
||||
bool(true)
|
||||
|
||||
isPrivate():
|
||||
bool(false)
|
||||
|
||||
isProtected():
|
||||
bool(false)
|
||||
|
||||
isStatic():
|
||||
bool(false)
|
||||
|
||||
isConstructor():
|
||||
bool(true)
|
||||
|
||||
isDestructor():
|
||||
bool(false)
|
||||
|
||||
**********************************
|
||||
**********************************
|
||||
Reflecting on method TestInterface::__destruct()
|
||||
|
||||
|
||||
isFinal():
|
||||
bool(false)
|
||||
|
||||
isAbstract():
|
||||
bool(true)
|
||||
|
||||
isPublic():
|
||||
bool(true)
|
||||
|
||||
isPrivate():
|
||||
bool(false)
|
||||
|
||||
isProtected():
|
||||
bool(false)
|
||||
|
||||
isStatic():
|
||||
bool(false)
|
||||
|
||||
isConstructor():
|
||||
bool(false)
|
||||
|
||||
isDestructor():
|
||||
bool(true)
|
||||
|
||||
**********************************
|
||||
**********************************
|
||||
Reflecting on method TestTrait::__construct()
|
||||
|
||||
|
||||
isFinal():
|
||||
bool(false)
|
||||
|
||||
isAbstract():
|
||||
bool(true)
|
||||
|
||||
isPublic():
|
||||
bool(true)
|
||||
|
||||
isPrivate():
|
||||
bool(false)
|
||||
|
||||
isProtected():
|
||||
bool(false)
|
||||
|
||||
isStatic():
|
||||
bool(false)
|
||||
|
||||
isConstructor():
|
||||
bool(true)
|
||||
|
||||
isDestructor():
|
||||
bool(false)
|
||||
|
||||
**********************************
|
||||
**********************************
|
||||
Reflecting on method TestTrait::__destruct()
|
||||
|
||||
|
||||
isFinal():
|
||||
bool(false)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue