2015-12-28 1 views
2

Je suis nouveau à Symfony 3.0 et mon projet actuel traite de l'analyse de mots. plus précisément avec le comptage des syllabes d'un mot. Il était difficile de trouver une solution à ce besoin. Après un moment, je tombe sur le paquet PECL "ps" (http://php.net/manual/de/ref.ps.php), pour être exact la fonction ps_hyphenate() (http://php.net/manual/de/function.ps-hyphenate.php). J'ai réussi à installer ce paquet et ses dépendances (pslib et inittool) et l'ai géré pour obtenir l'exemple de ps_hyphenate() qui fonctionne sur mon environnement local.Comment utiliser la fonction d'une extension PHP dans un contrôleur de Symfony

Inspiré par mon coup de chance j'ai essayé de mettre en œuvre une méthode dans mon contrôleur 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); 
} 

En conséquence, je reçois ce errormessage:

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

« Pas de problème » je pensais. Juste échapper à l'espace de noms spécifique du contrôleur.

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

ce fut le résultat:

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

Quel est le problème? Les extensions PECL ne font-elles pas partie de l'espace de noms global? Comment puis-je faire fonctionner cette fonction vitale?

Amour Fab.

+0

est l'extension correctement activée (c.-à-pouvez-vous utiliser ces fonctions dans un simple script PHP sans Sym Fony)? – xabbuh

+0

Salut, oui, j'ai essayé d'exécuter l'exemple de http://php.net/manual/de/function.ps-hyphenate.php sur mon environnement local et réussir. Est-il possible que symfony utilise un php.ini différent? – user3531999

+0

Résolu! Merci beaucoup pour votre indice! – user3531999

Répondre

0

résolu!

J'ai deux installations php différentes. Les deux ont des php.ini différents. Je pense que je viens de lancer une de ces installations, mais symfony utilise l'ancien php.ini. Donc, ma solution était d'ajouter ce qui suit à la php.ini

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

Note à moi-même: la prochaine fois essayez aussi Googwle pour « syllabe php ». J'ai trouvé un paquet textanalysis bien approprié.

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

Ce faisceau puissant renvoie la quantité de syllabes d'un mot que vous donnez à

Vous pouvez facilement inclure à votre projet symfony avec le compositeur

$ composer require davechild/text-statistics 

amour Fab