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
Dosen sind silbern