Il existe de nombreuses fonctions de chaîne en php. Par exemple, vous devez d'abord filtrer les espaces à la fin de la chaîne, puis trouver sa longueur. La manière générale d'écrire est :
strlen(trim($str))
Si vous. souhaitez implémenter une opération en chaîne similaire à celle de js , par exemple, comment dois-je écrire comme suit ?
$str->trim()->strlen()
Les éléments suivants sont implémentés de trois manières :
Méthode 1. Utilisez la fonction magique __call combinée avec call_user_func pour implémenter
Idée : définissez d'abord Une classe de chaîne StringHelper, le constructeur attribue directement une valeur, puis appelle les fonctions trim() et strlen() dans une chaîne. La relation d'appel est gérée en utilisant call_user_func dans la fonction magique appelée __call().
<?php class StringHelper { private $value; function __construct($value) { $this->value = $value; } function __call($function, $args){ $this->value = call_user_func($function, $this->value, $args[0]); return $this; } function strlen() { return strlen($this->value); } } $str = new StringHelper(" sd f 0"); echo $str->trim('0')->strlen();
Script d'exécution du terminal :
php test.php 8
Méthode 2. Utilisez la fonction magique __call combinée avec call_user_func_array pour implémenter
<?php class StringHelper { private $value; function __construct($value) { $this->value = $value; } function __call($function, $args){ array_unshift($args, $this->value); $this->value = call_user_func_array($function, $args); return $this; } function strlen() { return strlen($this->value); } } $str = new StringHelper(" sd f 0"); echo $str->trim('0')->strlen();
Instructions :
array_unshift(array,value1,value2,value3...)
La fonction array_unshift() est utilisée pour insérer de nouveaux éléments dans un tableau. Les valeurs du nouveau tableau seront insérées au début du tableau.
call_user_func() et call_user_func_array sont deux méthodes d'appel dynamique de fonctions. La différence réside dans la manière dont les paramètres sont transmis.
Troisième méthode, n'utilisez pas la fonction magique __call pour obtenir
Modifiez simplement _call() en fonction trim() :
public function trim($t) { $this->value = trim($this->value, $t); return $this; }
La clé Le but est de renvoyer le pointeur $this pour faciliter l’appel de cette dernière fonction.
Recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!