Rolf b: Nutzen der Interzeptermethoden im Framework

Beitrag lesen

Hallo MB,

das geht indirekt. Beispiel:

class DynamicClass {
    private $dynMeth = [];
    public function define($name, callable $implementation)
    {
       $this->dynMeth[$name] = $implementation;
    }
    public function __call($name, $arguments) 
    {
        if (isset($this->dynMeth[$name]))
        {
           return call_user_func_array($this->dynMeth[$name], $arguments);
        }
        // else fail spectacularly
    }
}

$c = new DynamicClass();
$c->define("hugo", function($a,$b) { return $a*$b; });

echo $c->hugo(3,4); // -> 12

Natürlich kann das Methoden-Array auch innerhalb der Klasse befüllt werden...

In dem Zusammenhang gerade gesehen: Es gibt in PHP sogar Funktoren, also Objekte, die man wie eine Funktion aufrufen kann. Dazu überschreibt man die __invoke magic method :)

Rolf

--
Dosen sind silbern