ich ein Problem habe mit ia Prüffunktion existiert - ich weiß function_exists() und method_exists(), kann aber die Funktionalität nicht bekomme ich suchtprüfen, ob die Funktion vorhanden ist
I-Funktionen über eine Socket-Verbindung wie $ MM- pass> Spieler-> Spielen(). Danach überprüfe ich sie und gebe das Ergebnis über die Socket-Verbindung zurück.
Ich filtere die Funktionen (muss mit $ MM beginnen, alles andere wird abgelehnt), aber ich kann nicht meinen Code zu überprüfen, ob die Funktion existiert. Dies ist wichtig, da der Server abstürzt, wenn die Funktion nicht existiert.
Wer weiß eine Lösung dafür?
Vielen Dank im Voraus.
der Code:
$MM = new SDBApplication;
Im Konstruktor von SDBApplication:
$this->Player = new SDBPlayer;
habe ich versucht, die folgenden Methoden zu überprüfen: den Code:
method_exists($MM, "Player::Play");
function_exist("$MM->Player->Play);
zurückkehren beide falsch, obwohl die Funktion
Die Lösung
$parts = explode('->', $string);
$numParts = count($parts)-1;
$object = '$MM';
for($i=0; $i < $numParts; $i++){
$object .= '->'.$parts[$i];
}
$parts[$numParts+1] = preg_replace('(\\(.*\\))', '', $parts[$numParts]);
eval('$check = method_exists('.$object.', '.$parts[$numParts+1].');');
Es muss existiert eval'd werden, da die Eingabe eine Zeichenfolge ist.
können Sie uns zeigen Sie Ihren Code und die Fehler? –
Es ist spät hier, also werde ich das erste Ding morgen tun –
@DavidChan hinzugefügt den Code –