【问题标题】:How to use function of a PHP-extension in a controller of Symfony如何在 Symfony 的控制器中使用 PHP 扩展的功能
【发布时间】:2016-04-02 17:06:35
【问题描述】:

我是 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 控制器中实现一个方法

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 扩展不是全局命名空间的一部分吗?我怎样才能使这个救生功能发挥作用?

爱工厂。

【问题讨论】:

  • 扩展是否正确启用(即,您可以在没有 Symfony 的简单 PHP 脚本中使用这些功能)吗?
  • 嗨,是的,我尝试在本地环境中运行 php.net/manual/de/function.ps-hyphenate.php 的示例并成功。 symfony 是否有可能使用不同的 php.ini?
  • 解决了!非常感谢您的提示!
  • 你是如何真正解决你的问题的?
  • 请将您的发现添加为答案并接受,而不是编辑原始答案。这样其他用户将直接看到该问题以及问题是如何解决的:)

标签: php namespaces pecl symfony


【解决方案1】:

解决了!

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

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

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

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

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

您可以使用 composer 轻松地将它包含到您的 symfony 项目中

$ composer require davechild/text-statistics 

爱工厂

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多