Maison >développement back-end >Problème PHP >Comment implémenter l'appel de chaîne PHP ?
Comment implémenter l'appel de chaîne PHP : 1. Utilisez la fonction magique [_call] combinée avec [call_user_func] pour implémenter ; 2. Utilisez la fonction magique [_call] combinée avec [call_user_func_array] pour implémenter ; fonction magique 【_call】à réaliser.

Comment implémenter l'appel de chaîne PHP :
Méthode 1. Utiliser la fonction magique__call Combiner call_user_func pour mettre en œuvre l'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, via la fonction magique appelé Utilisez __call() dans call_user_func pour gérer la relation d'appel. L'implémentation est la suivante :
<?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__callCombiné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();
Description : La fonction
array_unshift(array,value1,value2,value3...)
array_unshift() est utilisée pour insérer de nouveaux éléments. dans le 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.
Méthode 3 : N'utilisez pas la fonction magique __call pour implémenter
Modifiez simplement _call() en fonction trim() :
public function trim($t)
{
$this->value = trim($this->value, $t);
return $this;
} Le point clé est de renvoyer le pointeur pour faciliter l'appel de cette dernière fonction. $this
Recommandations d'apprentissage associées :
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!