PHP.nl

uopz_compose

uopz_compose

Compose a class

void **uopz_compose** string $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

Voorbeeld: 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"
}