2017-07-09 3 views
0

Ich habe einen Rekord Zeilenfeld Datenbank, die wie folgt lautet:Übersetzen von einem MySQL-Datenbank Rekordwert in einen PHP-Befehl

| id | command | 
------------------ 
| 1 | getName() | 

Ich habe auch eine PHP-Einheit, das Mitglied ist, und hat die getName() Funktion.

Angenommen, der Datenbankeintrag wird gelesen und in $ record geparst und ich habe $ user, wie verknüpfe ich $ record mit dem Befehl $ user?

Ich versuchte $user-> . $record['command'] aber offensichtlich nicht funktioniert. Ich möchte das Hardcoding vermeiden, da es möglichst dynamisch sein muss.

Beispiel Code:

$record = DB::queryFirstRow("SELECT * from command_records WHERE id='1'"); 
$user = new User("Kenny"); 
// Here is where I'm trying to perform the $user->getName() 
// by reading $record['command']. $record['command'] is getName() 
$user-> . $record['command']; 

Es ist natürlich nicht. Ich denke an eval vom googlen früher aber kann es auch nicht zum Laufen bringen.

+0

versuchen relevanten Details des Codes veröffentlichen. –

+0

ok, hat den Kommentar hinzugefügt! – Kenneal

+0

Was ist der Fehler, vor dem Sie stehen? –

Antwort

2

, was Sie suchen ist PHP's variable variables

Sie so etwas wie versuchen: es hier

class User 
{ 
    public function getName() 
    { 
     return "SomeName"; 
    } 
} 

// assuming this is how your result looks like 
$result = [ 
    'command' => 'getName()', 
    // more data 
]; 

$command = $result['command'];   // is "getName()" 
$command = str_replace('()','',$command); // is "getName" 
// you need to remove the '()'. just get the name of the method 

$user = new User(); 
echo $user->{$command}(); 
// output: SomeName 

Siehe: https://3v4l.org/OVYAa

+1

Ich glaube nicht, dass dies technisch 'Variable Variablen' ... sowieso, https://StackOverflow.com/Questions/251485/Dynamic-Class-Method-Invocation-in-PHP zeigt mehrere verschiedene Methoden. – user2864740

+0

danke Alex Tartan und user2864740. Ihre Antworten sind sehr hilfreich. Habe heute etwas neues über PHP gelernt. Habe einen schönen Tag vor dir :)) – Kenneal

Verwandte Themen