如何在Symfony的控制器中使用PHP扩展的功能

时间:2015-12-28 20:41:11

标签: php namespaces pecl symfony

我是Symfony 3.0的新手,我目前的项目涉及wordanalysis。更准确地说,计算一个单词的音节。很难找到满足这种需求的解决方案。过了一会儿我偶然发现了PECL包“ps”(http://php.net/manual/de/ref.ps.php),确切地说是函数ps_hyphenate()(http://php.net/manual/de/function.ps-hyphenate.php)。我成功安装了这个包及其依赖项(pslib和inittool)并管理它以获取ps_hyphenate()的示例在我的本地环境中工作。

受到我的幸运连胜的启发,我试图在我的symfony控制器中实现一个方法

private function countSyllables($string) {
    $psdoc = ps_new();
    ps_set_parameter($psdoc, "hyphendict", "/../Utils/hyph_de.dic");
    $hyphens = ps_hyphenate($psdoc, $string);
    ps_delete($psdoc);
    return count($hyphens);
}

结果我得到了这个错误消息:

Attempted to call function "ps_new" from namespace "AppBundle\Controller". 

“没问题”我想。只需转义控制器的特定命名空间。

...
    $psdoc = \ps_new();
    ...

这是结果:

 Attempted to call function "ps_new" from the global namespace. 

什么错了? PECL Extensions不是全局命名空间的一部分吗?我怎样才能使这种节省生命的功能发挥作用呢?

爱Fab。

1 个答案:

答案 0 :(得分:0)

解决!

我有两个不同的php安装。两者都有不同的php.ini。我想我只是运行其中一个安装,但symfony使用旧的php.ini。所以我的解决方案是将以下内容添加到正确的php.ini

extension_dir = "/usr/local/php5/extensions/"
extension=ps.so

自己注意:下次还要尝试Googwle for" syllable php"。我发现了一个非常合适的文本分析包:

https://github.com/DaveChild/Text-Statistics

这个强大的包会返回你给出的单词的音节数量。

您可以使用编辑器

轻松将其包含在您的symfony项目中
$ composer require davechild/text-statistics 

Love Fab