Ich habe ein paar Probleme beim Aufruf einer Funktion aus einer Zeichenfolge, da es viel komplizierter ist, als nur eine Funktion aufzurufen, ich muss es innerhalb einer anderen Klasse mit einem anderen Namensraum tun.PHP: Aufruf einer anderen Klassenfunktion mit Namespace?
Ich verschicke meine Routen mit dieser Methode, ich benutze TreeRoute-Paket auf GitHub.
public function dispatch() {
$uri = substr($_SERVER['REQUEST_URI'], strlen(implode('/', array_slice(explode('/', $_SERVER['SCRIPT_NAME']), 0, -1)) . '/'));
$method = $_SERVER['REQUEST_METHOD'];
$result = $this->router->dispatch($method, $uri);
if (!isset($result['error'])) {
$handler = $result['handler'];
$params = $result['params'];
// TODO: Call the handler here, but how?
}
else {
switch ($result['error']['code']) {
case 404 :
echo 'Not found handler here';
break;
case 405 :
echo 'Method not allowed handler here';
$allowedMethods = $result['allowed'];
if ($method == 'OPTIONS') {
// OPTIONS method handler here
}
break;
}
}
}
Ich registrieren Routen wie folgt aus:
public function __construct() {
$this->router = new \TreeRoute\Router();
}
public function setRoutes() {
$this->router->addRoute('GET', '/test', 'App/Controllers/SomeController/test');
}
Was ich will, Anruffunktion 'Test' in der Klasse zu tun ist 'SomeController', jetzt App \ Controllers '‚SomeController einen Namensraum' hat.
Ich schaute in Calluserfunc, aber ich konnte nicht herausfinden, wie es mit meinem String-Format und mit einem Namespace, kann mir jemand helfen?
http://php.net/manual/en/function.call-user-func.php