symfony2中使用的sphinx-php-api类作为服务时出错


Error with sphinx php api class used in symfony2 as a service

当我想在索引中搜索术语时,我在symfony2项目中使用sphinx-php-api作为服务,我得到了以下警告

警告:在/var/www/domain.com/Symfony2/src/project/myBundle/services/SphinxClient.php行997中为foreach()提供的参数无效

这是997

foreach ( $this->_weights as $weight )

所以我在foreach()之前添加了一个测试,比如if(!empty($this->_weights))

每个foreach中都出现了相同的错误,所以我添加了相同的测试。

则另一个错误适用于

注意:未定义的属性:prject''MyBundle''services''ShinxClient::$_socket-in in/var/www/domain.com/Symfony2/src/project/MyBundle/services/SphinxClient.php行563

我找了几个小时的问题根源。

谢谢你事先的帮助。

在sphinxapi.php文件中使用了旧的构造函数。

Delete string ( near 430 )
function SphinxClient()

并写入:

public function __construct()

一切都很好。

不要忘记在文件中设置名称空间(我将sphinxapi.php重命名为SphinxClient.php),并在开始时写入:

namespace Acme'MyBundle'Sphinx;

你的路可能是另一条路。

如果看不到文件的来源,没有什么可以帮助的。

在sphinx附带的标准sphinxapi.php类中,变量都是类变量,因此$this->_weighs是一个数组。也许当它被赋予Symfony 时错过了