Ich habe eine Klasse, die eine $action
Variable hat, die eine abrufbare wie es Wert ist. Normalerweise, wenn Sie diesen Wert zu initialisieren, könnte ich so etwas tun:Aufrufen einer Callable in eine Variable ohne sie aufzurufen
$this->action();
Die Klasse selbst sieht wie folgt aus:
$this->action = function() {
echo "My function";
}
ich dann die Funktion, indem Sie so etwas wie dies nennen würde
<?php
/**
* Resolves an non-callable action
*/
class ActionResolver
{
private $action;
/**
* Action constructor.
*
* @param string $action
*/
public function __construct($action)
{
$this->action = $action;
}
public function resolve()
{
$actionResolver = new ActionResolver();
$results = ...
$this->action = $actionResolver->resolveCallable($results);
}
/**
* @return callable
*/
public function getAction()
{
return $this->action;
}
}
In der resolveCallable()
-Funktion sollte die Aktion durch die Methode eines anderen Objekts durch die Ergebnisse der Variablen $results
aufgelöst werden. Diese Methode ist in der ActionResolver
Klasse. Das Verfahren sieht wie folgt aus:
public function resolveCallable(array $results)
{
$class = $results[0];
$method = null;
if (isset($results[1])) {
$method = ...
}
$object = new $class;
if (!is_null($method)) {
return $class->$method();
}
return function() {};
}
Das Verfahren und die Klasse erhalten, indem eine von der $results
Variable genommen Zeichenfolge aufgelöst. Der Name der Klasse und der Methode sind gültig und funktionieren.
Wenn ich versuche, dies aufzurufen, gibt es den Rückgabewert der Methode zurück, aber nicht die Methode selbst.
Wie kann ich die Methode selbst anstelle des Inhalts der Methode zurückgeben, ohne sie aufzurufen?
Ganz ehrlich, das ist ein bisschen gewunden. Kannst du es auf ein einfacheres Beispiel herunterkochen? – deceze
Ich kann es nicht wirklich vereinfachen. Es gibt eine Calling-Funktion, die von einer Klassenmethode abrufbar ist. – Bas
Was mir am meisten unklar ist ist, wie genau Ihre drei großen Code-Schnipsel zusammenpassen. – deceze