php - 如何在 Symfony 的 Controller 中使用 PHP 扩展的功能

标签 php namespaces pecl symfony

我是 Symfony 3.0 的新手,我当前的项目涉及词分析。更准确地计算单词的音节。很难找到满足这种需求的解决方案。过了一会儿,我偶然发现了 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 Controller 中实现一个方法

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". 

“没问题”我想。只需转义 Controller 的特定命名空间。
...
    $psdoc = \ps_new();
    ...

这是结果:
 Attempted to call function "ps_new" from the global namespace. 

怎么了? PECL 扩展不是全局命名空间的一部分吗?我怎样才能使这个救生功能起作用?

爱法布。

最佳答案

解决了!

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

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

对自己的注意:下次也尝试在谷歌搜索“sylable php”。我找到了一个非常合适的文本分析包:

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

这个强大的包会返回您输入的单词的音节数量。

您可以使用 Composer 轻松将其包含到您的 symfony 项目中
$ composer require davechild/text-statistics 

爱情工厂

关于php - 如何在 Symfony 的 Controller 中使用 PHP 扩展的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34500468/

相关文章:

php - 如何将值插入数据库中的特定行

ruby-on-rails - rails 嵌套对象表单和命名空间 Controller

php - Docker安装pecl报"No releases available"错误

vagrant puphpet Composer 创建项目不起作用

php - 静态编译 php pecl 扩展(在二进制文件中与 extension=ext.so)会提高性能吗?

php - Laravel 7 在作业类中动态设置日志路径

php - 在 PHP 中跟踪用户来自哪里?

php - 我如何重写这个动态 SQL 循环以包括 PDO 清理?

c++ - 在 C++ 中实现没有类的命名空间

C++:在匿名命名空间中声明函数原型(prototype)的正确方法是什么?