Comment récupérer une constante de plusieurs lignes ET une méthode dans un tableau en PHP-POO ???

Eléphant du PHP | 137 Messages

23 mars 2021, 22:44

Bonjour.

J'ai deux petit et j'aimerais que vous m'éclairiez.

1 - Comment récupérer une CONSTANTE de plusieurs lignes définie dans une classe en PHP-POO ??? Je voudrais utiliser la fonction PUNCT de la ligne 4 sur la ligne 21 de mon code ci-après:

Code : Tout sélectionner

class PhraseParser { define('PUNCT', "\.|\,|\:|\;|\"|\'|\[|\/|\%|\?|-|" . "\]|\{|\}|\(|\)|\!|\||।|\&|\`|" . "\’|\‘|©|®|™|℠|…|\/|\>|,|\=|。|)|:|、|" . "”|“|《|》|(|「|」|★|【|】|·|\+|\*|;". "|!|—|―|?|!|،|؛|؞|؟|٪|٬|٭"); /** * If that many exist, the minimum number of results to get * and group before trying to compute the top x (say 10) results */ define('MIN_RESULTS_TO_GROUP', 200); /** locale sub-namespace */ define('NS_LOCALE', NS . "locale\\"); public static function removePunctuation($sentences) { if (is_array($sentences)) { foreach ($sentences as $key => $sentence) { $sentences[$key] = trim(preg_replace('/[' . PUNCT . ']+/iu', ' ', $sentence)); } } return $sentences; }


QUESTION 1: Comment donc récupérer au niveau de la ligne 21, cette constante PUNCT définie sur la ligne 4 ???

2 - Mon deuxième souci est similaire au premier à une petite différence prêt. En fait, j'ai créé une fonction getBot() dans la classe suivante. Mais je souhaiterais récupérer la valeur retournée par cette fonction dans un tableau du constructeur de la classe contenant cette même méthode getBot au lieu de réécrire la même valeur comme je l'ai fait dans le code ci-après:

Code : Tout sélectionner

class DomDocumentParser { private $doc; public function __construct($url) { $options = array( 'http'=>array( 'method'=>"GET", 'header'=>"User-Agent: hBot/0.1\n" ) ); $context = stream_context_create($options); $this->doc = new DomDocument('1.0', 'UTF-8'); @$this->doc->loadHTML(@file_get_contents($url, false, $context)); } // Create an array of all of the "a" tags. public function getBot() { return "hBot/0.1"; }
QUESTION 2: Comment appeler la méthode getBot() au niveau du User-agent de la ligne 7 de mon code ci-dessus ???

Eclairez-moi s'il vous plaît sur ces deux point très importants pour moi car je suis confus à l'utilisation des appels de constantes et méthodes dans mon cas.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 mars 2021, 17:09

Salutations !

Pour ta première question, les constantes de classe se gèrent comme des attributs. Pour l'utiliser dans ta classe, il faut faire un self::PUNCT puisqu'il s'agit d'un attribut static de la classe (auquel cas on utilise self plutôt que $this).
https://www.php.net/manual/fr/language. ... stants.php

Et pour la seconde tu fais appel à la méthode getBot() pour l'instance que tu es en train de construire, un $this->getBot() devrait donc faire l'affaire :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 137 Messages

25 mars 2021, 21:47

Dans mon cas et concernant ma préocuppation N°2, this->getBot() me retourne une erreur:
Parse Error: syntax errer, unexpected '->' ((T_OBJECT_OPERATOR), expecting')'
Mais quand je fais, self::getBot() tout marche à perfection.

Merci.