2011-01-13 3 views
5

Ist diese Zeile legal PHP?

$this->mongo->($this->db)->$collection_name->insert($document_name); 

Wenn $ this-> db eine Konstante mit dem zu verwendenden Datenbanknamen ist.

Danke

Antwort

2

Nein, Strings (und damit Ihre Konstante) sollten in Klammern eingewickelt werden, wie folgt aus:

$this->mongo->{$this->db}->$collection_name->insert($document_name); 
9

Versuchen geschweiften Klammern statt Klammern verwenden:

$this->mongo->{$this->db}->$collection_name->insert($document_name); 

Oder $this->db zu einem lokalen var und zum Verwenden, dass statt:

$db_name = $this->db; 
$this->mongo->$db_name->$collection_name->insert($document_name); 
+0

Haftungsausschluss: Ich habe noch nie mit MongoDB gearbeitet. (Eines Tages ...) – BoltClock

+0

großartig! wird als eine Lösung hinzufügen, sobald Stapelüberlauf mir erlauben wird. Option zwei ist ein schlechter Stil. und MongoDB ist großartig! – CamelCamelCamel

0

Nein, Sie nicht haben können ->() -> wo hast du mongo -> ($ this-> db) -> $ coll ... Vielleicht suchten Sie nach

$this->mongo($this->db)->$collection_name->insert($document_name); 
1

$connection->db->collection ist nur eine Abkürzung für:

$this->mongo->selectDB($this->db)->selectCollection($collection_name)->insert(...); 

, die in Ihrem Fall könnte besser funktionieren . +1 für BoltClocks Antwort, auch wenn Sie mit dem $x->y->z Stil bleiben wollen.

0

Sie wollten $this->mongo->selectDB($this->db)->$collection_name->insert($document_name)

Verwandte Themen