2011-01-13 18 views
5

Questa riga è legale in PHP?

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

se $ this-> db è una costante con il nome db da utilizzare.

Grazie

risposta

2

No, stringhe (e quindi la vostra costante) deve essere avvolto tra parentesi, in questo modo:

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

Provate ad usare le parentesi graffe invece di parentesi:

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

o l'assegnazione $this->db ad una var locale e utilizzando che, invece:

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

Diniego: Non ho mai lavorato con MongoDB. (Un giorno ...) – BoltClock

+0

fantastico! aggiungerà come soluzione una volta che lo stack overflow mi permetterà. l'opzione due è in cattivo stile. e MongoDB è fantastico! – CamelCamelCamel

0

No, non si può avere ->() -> dove hai mongo -> ($ this-> db) -> $ coll ... Forse stavi cercando

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

$connection->db->collection è solo una scorciatoia per:

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

che potrebbe funzionare meglio nel tuo caso . +1 anche per la risposta di BoltClock, se vuoi attenersi allo stile $x->y->z.

0

Si voleva $this->mongo->selectDB($this->db)->$collection_name->insert($document_name)

Problemi correlati