Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonctionnement incompréhensible d'une classe

    21 janvier 2018 à 10:01:35

    Bonjour, je cherche à utiliser une class (https://github.com/yooper/php-text-analysis/blob/master/src/NGrams/NGramFactory.php)

    Je la colle ici :

    <?php
    namespace TextAnalysis\NGrams;
    /**
     * Generate ngrams
     *
     * @author yooper <yooper>
     */
    class NGramFactory
    {
        const BIGRAM = 2;
        const TRIGRAM = 3;
        
        /**
         * Protect the constructor
         */
        protected function __construct(){}
        
        /**
         * Generate Ngrams from the tokens
         * @param array $tokens
         * @param int $nGramSize
         * @return  array return an array of the ngrams
         */
        static public function create(array $tokens, $nGramSize = self::BIGRAM, $separator = ' ') : array
        {
            $separatorLength = strlen($separator);
            $length = count($tokens) - $nGramSize + 1;
            if($length < 1) {
                return [];
            }
            $ngrams = array_fill(0, $length, ''); // initialize the array
            
            for($index = 0; $index < $length; $index++)
            {
                for($jindex = 0; $jindex < $nGramSize; $jindex++)
                {
                    $ngrams[$index] .= $tokens[$index + $jindex]; 
                    if($jindex < $nGramSize - $separatorLength) {
                        $ngrams[$index] .= $separator;
                    }
                }
            }
            return $ngrams;
        }
    }

    Le problème, c'est que je ne comprends pas cette ligne :

    static public function create(array $tokens, $nGramSize = self::BIGRAM, $separator = ' ') : array
        {

    Quand je lance un fichier faisant appel à cette class, l'erreur est :

    ( ! ) Parse error: syntax error, unexpected ':', expecting ';' or '{' in C:\wamp64\www\master\v0.4.1.0\class-ngram.php on line 24

    Ce que je ne comprends pas, c'est pourquoi il y a 2 array noté comme ça. Je ne savais pas qu'on pouvait faire ça ( je débute ^^ ) et je ne sais pas comment l'interpréter du coup !

    Je voudrais simplement envoyer un string de texte et obtenir un array.

    Voici mon simple code

    $test = 'Je suis une phrase à analyser';
    $ngram = new NGramFactory();
    $ngram->create($test);
    print_r($ngram);

    Merci ^^

    -
    Edité par AnCelle 21 janvier 2018 à 10:02:17

    • Partager sur Facebook
    • Partager sur Twitter
      21 janvier 2018 à 10:29:34

      > Je ne savais pas qu'on pouvait faire ça

      Vive la documentation. Sinon cette classe a besoin de PHP 7.0 au minimum.

      • Partager sur Facebook
      • Partager sur Twitter
      le bienfait n'est jamais perdu
        21 janvier 2018 à 10:49:46

        "Vive la documentation. "


        Merci de ta précieuse aide :)


        http://php.net/manual/fr/language.oop5.php


        J'arrive ici, et je vais tout lire pour trouver la solution.


        Alors que peut être ici,  quelqu'un sait où trouver l'info plus rapidement et va pouvoir m'aideR.


        Mais Mossieu préfère être hautain et se moquer d'un débutant.


        Belle mentalité Willy !

        -
        Edité par AnCelle 21 janvier 2018 à 10:54:51

        • Partager sur Facebook
        • Partager sur Twitter
          21 janvier 2018 à 11:38:11

          J'ai dit que la classe a besoin de PHP 7 (require PHP >= 7 https://github.com/yooper/php-text-analysis/blob/master/composer.json )   au moins.. Tu dis que tu ne savais pas qu'on pouvait mettre :array en PHP d'où le "vive la documentation" https://secure.php.net/manual/fr/functions.returning-values.php  tout y est ce n'est rien d'extra, si tu me trouves hautain bah tant pis...

          Je suis comme ça je le dit, il y a des choses qui se trouvent dans la documentation, débutant ne veut pas dire "avoir une forme de paresse".

          -
          Edité par WillyKouassi 21 janvier 2018 à 11:43:39

          • Partager sur Facebook
          • Partager sur Twitter
          le bienfait n'est jamais perdu

          Fonctionnement incompréhensible d'une classe

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown