2010-12-30 12 views
2

ich diesen Code haben (für eine Abfrage aus der Datenbank erhalten, in MyBB Quelle):PHP geschweifte Klammer, was in diesem Code ist Sinn

$query = "SELECT ".$fields." FROM {$this->table_prefix}{$table}"; 

Meine Frage ist: Was ist Bedeutung von {$table}? und was ist der Unterschied zwischen $ Tabelle und {$table} (was bedeutet {}) ??

Danke ...

Antwort

2

Die geschweiften Klammern speichern einfach die Variablennamen aus dem restlichen Text (und anderen Variablennamen). Im Allgemeinen wird diese Syntax aus Gründen der Konsistenz verwendet; Es ist manchmal notwendig, wenn Variablen in anderen Buchstaben vorkommen, aber viele Programmierer verwenden sie ständig, so dass sie nie darüber nachdenken müssen, ob es notwendig ist.

Siehe the documentation.

+0

+1 für Wenn Sie immer die lange Form verwenden, dann bricht das Zurückgehen und das Ändern von Dingen selten die Dinge – Dereleased

4

Es ist die PHP-Syntax für Ausdrücke in doppelten Anführungszeichen inlining. Wenn Sie einfache Ausdrücke wie Variablennamen haben, können Sie einfach $ table verwenden, ohne sich um {} zu kümmern.

0
$query = "SELECT ".$fields." FROM {$this->table_prefix}{$table}"; 

Würde

$query = "SELECT ".$fields." FROM $this->table_prefix$table"; 

Mit geschweiften Klammern gute Praxis ist für lesbaren Code identisch auszuführen, wenn Variablen innerhalb von Strings (insbesondere für diejenigen ohne Syntax hightlighting/Farbenblindheit) verwendet wird.

Beispiel: „Viele Programmierer verwenden es die ganze Zeit, so dass sie nie darüber nachdenken, ob es notwendig ist“

<?php 
class simple 
{ 
    function __construct() 
    { 
     $this->table_prefix = "blablabla"; 
    } 

    function doSomething() 
    { 
     $fields = "1,2,3"; 
     $table = "MyTable"; 
     $query = "SELECT ".$fields." FROM $this->table_prefix$table"; 
     return $query; 
    } 
} 
$a = new simple(); 
print $a->doSomething(); 

?> 

Ta

+1

Nein, es würde nicht identisch ausgeführt werden. Der zweite wäre ein Fehler, da '$ this-> table_prefix' ohne Klammern nicht verstanden wird. – ceejayoz

+0

So kann ich schreiben: '$ query =" SELECT $ Felder FROM $ this-> table_prefix $ Tabelle ";' statt $ $ query = "SELECT". $ Felder. "FROM $ this-> table_prefix $ table"; ' ???? – mrdaliri

+0

Ja, es funktioniert ohne die Klammern. Versuch es! – trickwallett