PHP: допустимо ли $ this-> что-то -> ($ this-> foo) -> bar? - PullRequest
5 голосов
/ 13 января 2011

Является ли эта строка законной PHP?

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

если $ this-> db - это константа с именем используемой базы данных

Спасибо

Ответы [ 5 ]

9 голосов
/ 13 января 2011

Попробуйте использовать фигурные скобки вместо скобок:

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

Или присвоение $this->db локальному var и использование его вместо:

$db_name = $this->db;
$this->mongo->$db_name->$collection_name->insert($document_name);
2 голосов
/ 13 января 2011

Нет, строки (и, следовательно, ваша константа) должны быть заключены в скобки, например:

$this->mongo->{$this->db}->$collection_name->insert($document_name);
1 голос
/ 13 января 2011

$connection->db->collection это просто сокращение для:

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

, который может работать лучше в вашем случае. +1 для ответа BoltClock, хотя, если вы хотите придерживаться стиля $x->y->z.

0 голосов
/ 13 января 2011

Вы хотели $this->mongo->selectDB($this->db)->$collection_name->insert($document_name)

0 голосов
/ 13 января 2011

Нет, вы не можете иметь -> () -> где у вас есть монго -> ($ this-> db) -> $ coll ... Может быть, вы искали

$this->mongo($this->db)->$collection_name->insert($document_name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...