| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: call_user_func + Singleton + Linux = FAIL im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hey, Ich hab ein Problem mit meinem Framework, es will einfach nicht auf meinem Linux-vServer laufen. Das Problem ist ...
![]() |
| | #1 (permalink) |
call_user_func + Singleton + Linux = FAIL Anzeige Hey, Ich hab ein Problem mit meinem Framework, es will einfach nicht auf meinem Linux-vServer laufen. Das Problem ist folgender Aufbau: Code: if(preg_match("/^[a-z]+[a-z0-9]*$/i", $pluginname)){
$debugger -> log("Loading Plugin $pluginname");
require_once($folder . '/' . $item);
$classname = "plugin_" . $pluginname;
$obj = call_user_func($classname."::getInstance");
$this -> plugins[$pluginname] = $obj; Warning: call_user_func(plugin_session::getInstance) [function.call-user-func]: First argument is expected to be a valid callback in /var/www/[...]/plugins/session.php on line 45 Weiterhin hängt der Fehler in der call_user_func, da Code: plugin_session::getInstance();//Funktioniert
call_user_func("plugin_session::getInstance");//Funktioniert NICHT! Auf beiden OS benutz ich PHP5, wohl leicht unterschiedliche Versionen: vServer: PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2 (cli) (built: Aug 4 2010 06:06:53) localhost: PHP 5.3.1 (cli) (built: Nov 20 2009 17:26:32) Um jetzt nicht in allen plugin-dateien zum Schluss ein $instance = plugin_<name>::getInstance(); schreiben zu müssen muss ich iwie diesen Fehler beheben.. Jemand eine Idee? MfG EDIT Wie jedes mal - Nach 2 Std verzweifeltem googeln stellt man die Frage und nach 5 min findet man es dann selbst raus: Code: call_user_func(array("plugin_session","getInstance"));
__________________ Be the source always with you. Geändert von ChiefWiggum (20.05.11 um 18:30 Uhr) Grund: . | |
| | |
| | #2 (permalink) | |
| Registriert seit: 21.08.10 ![]() Likes: 10 | Zitat:
Schau mal hier: PHP: call_user_func - Manual Das sollte also eher so aussehe: Code: call_user_func("plugin_session::getInstance->myCallbackFunction") Geändert von blue182 (20.05.11 um 21:29 Uhr) | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Member of Honour ![]() | Das Problem hat weder was mit Singleton noch was mit Linux zu tun sondern lediglich mit der falschen Verwendung einer Funktion. Dass in einem System Warnungen angezeigt werden und im anderen nicht, liegt an der unterschiedlichen PHP-Konfiguration, speziell an error_reporting Ein korrekter Callback zu einer Methode einer Klasse besteht normalerweise aus einem Array, welches die Instanz der Klasse und den Namen der aufzurufenden Methode enthält! Für deinen Fall, also dem Aufrufen einer statischen Methode, geht einerseits die Lösung, wie du sie im Edit hast oder es könnte auch folgendes funktionieren: PHP-Code: Da ich gerade mit Handy unterwegs bin, kann ich das gerade nicht testen... |
| | |
| | #4 (permalink) | ||
| Themenstarter | Zitat:
Example #4 Using a class method with call_user_func() call_user_func(array($classname, 'say_hello')); call_user_func($classname .'::say_hello'); // As of 5.2.3 geht wohl laut der Manual auch Zitat:
das geht leider nicht, hab ich versucht. Aber ich habs ja jetzt hinbekommen Danke nochmal^^
__________________ Be the source always with you. | ||
| | |
| | #5 (permalink) | |
| Registriert seit: 07.05.07 ![]() Likes: 19 | Zitat:
Code: sheeep@willow:~$ php --version PHP 5.3.5-1ubuntu7.2 [...] sheeep@willow:~$ php cuf.php b a PHP-Code:
__________________ | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |