2013-08-17 2 views
0

Я использую поисковую систему Elastica для моего проекта Symfony.Вызов класса Elastica с помощью «_» вместо «»

Теперь, я получаю ошибку ниже:

автозагрузчика ожидается класс "Elastica_Query_Bool" должен быть определен в файле «/ блаблабла/продавец/Ruflin/эластика/Библиотека/Elastica/Query/Bool.php». Файл был найден, но класса не было, имя класса или namespace, вероятно, имеет опечатку.

Если я изменю new \Elastica_Query_Bool() на new \Elastica\Query\Bool() в моем файле php, он отлично работает.

Но я не могу понять, почему я получаю сообщение об ошибке сейчас. Есть идеи ?

ответ

1

Потому что, когда вы новый Elastica_Query_Bool, он ищет класс, который называется Elastica_Query_Bool. И, конечно, фактический класс называется Bool.

попробовать:

use Elastica\Query\Bool; // At the top of your file following the namespace line. 
... 
$bool = new Bool(); 

Может хотите просмотреть пространства имен в руководстве PHP.

+0

Да, конечно, он ищет этот класс, и его нет, но он работал раньше. Более того, все примеры, которые я могу найти на Elastica, предлагают использовать новый Elastica_Query_Bool(). Возможно, что-то изменилось в комплекте Elastica или в новейшей версии Symfony? – Mikolaj

+1

Проверьте файл Bool.php. Имеет ли место замедление пространства имен? Если это произойдет, значит, он был обновлен из версии pre = namespace. Вы должны смотреть на старые примеры. – Cerad

+0

Эта статья может помочь: http://richardmiller.co.uk/2011/11/11/symfony2-integrating-elasticsearch/ – Cerad