2015-12-28 3 views
2

Im new для 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() в моей локальной среде.Как использовать функцию PHP-расширения в контроллере 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); 
} 

В результате я получаю эту ErrorMessage:

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

«Нет проблем» я не думал. Просто избегайте определенного пространства имен контроллера.

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

это результат:

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

Что не так? Разве расширения PECL не являются частью глобального пространства имен? Как я могу заставить эту функцию сохранения жизни работать?

Любовь Fab.

+0

удлинительный правильно включен (то есть вы можете использовать эти функции в простой PHP скрипт без Sym Fony)? – xabbuh

+0

Привет, да, я попытался запустить пример http://php.net/manual/de/function.ps-hyphenate.php в своей локальной среде и добиться успеха. Есть ли вероятность, что symfony использует другой php.ini? – user3531999

+0

Решенный! Большое вам спасибо за подсказку! – user3531999

ответ

0

решена!

У меня есть две разные установки php. Оба имеют разные php.ini. Я думаю, что я просто запускаю одну из этих установок, но symfony использует старый php.ini. Таким образом, мое решение было бы добавить следующее к правильному php.ini

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

примечания к себе: в следующий раз и пытается Googwle для «слога PHP». Я нашел много надлежащего textanalysis пакет:.

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

Этот могучий пучок возвращает количество слогов в слове, вы даете в

Вы можете легко включить его в свой симфони проект с композитором

$ composer require davechild/text-statistics 

Любовь Fab