(PECL uopz >= 1.0.0)
uopz_compose — Compose a class
$name
, array $classes
[, array $methods
[, array $properties
[, int $flags
]]] )Creates a new class of the given name that implements, extends, or uses all of the provided classes
nameA legal class name
classesAn array of class, interface and trait names
methodsAn associative array of methods, values are either closures or [modifiers => closure]
propertiesAn associative array of properties, keys are names, values are modifiers
flagsEntry type, by default ZEND_ACC_CLASS
例1 uopz_compose() example
<?php
class myClass {}
trait myTrait {}
interface myInterface {}
uopz_compose(
Composed::class, [
myClass::class,
myTrait::class,
myInterface::class
], [
"__construct" => function() {
/* ... */
}
]);
var_dump(
class_uses(Composed::class),
class_parents(Composed::class),
class_implements(Composed::class));
?>
上の例の出力は、 たとえば以下のようになります。
array(1) {
["myTrait"]=>
string(7) "myTrait"
}
array(1) {
["myClass"]=>
string(7) "myClass"
}
array(1) {
["myInterface"]=>
string(11) "myInterface"
}