2011-01-13 8 views
5

Czy ta linia jest legalna w PHP?

jeśli $ this-> db jest stałą z nazwą bazy danych do użycia.

Dziękuję

Odpowiedz

2

Nie, struny (a tym samym swoją stałą) powinny być opakowane w nawiasach, tak:

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

Spróbuj użyć nawiasów klamrowych zamiast nawiasów:

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

lub przypisywanie $this->db do lokalnej var i używanie że zamiast:

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

Oświadczenie: Nigdy nie pracowałem z MongoDB. (Któregoś dnia ...) – BoltClock

+0

świetnie! doda jako rozwiązanie, gdy pozwoli mi przepełnienie stosu. opcja druga to zły styl. i MongoDB jest niesamowity! – CamelCamelCamel

0

Nie, nie można mieć ->() -> gdzie masz mongo -> ($ this-> db) -> $ coll ... Może szukałeś

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

$connection->db->collection jest tylko skrótem:

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

który może działać lepiej w przypadku . +1 dla odpowiedzi BoltClock też, jeśli chcesz trzymać się stylu $x->y->z.

0

Chciałeś $this->mongo->selectDB($this->db)->$collection_name->insert($document_name)

Powiązane problemy