Maison >développement back-end >tutoriel php >Trois façons d'implémenter des opérations en chaîne en PHP

Trois façons d'implémenter des opérations en chaîne en PHP

高洛峰
高洛峰original
2017-02-09 10:34:471236parcourir

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 méthode d'écriture générale est :

strlen(trim($str))

Si. vous souhaitez implémenter une chaîne similaire à celle de js. Par exemple, comment dois-je écrire ce qui suit ?

$str->trim()->strlen()

Voici trois façons de l'implémenter :

Méthode 1. Utilisez la fonction magique __call combinée avec call_user_func pour implémenter le

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 et gère la relation d'appel en utilisant __call() dans la fonction magique appelée call_user_func , 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. Utiliser 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();

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 : Pour implémenter __call

sans utiliser la fonction magique

, modifiez simplement _call() en trim() fonction :

public function trim($t)
{
    $this->value = trim($this->value, $t);
    return $this;
}

Le point clé est, Renvoie le pointeur $this pour faciliter l’appel de cette dernière fonction.


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. l'écriture est :

strlen(trim($str))

Si vous souhaitez implémenter une opération en chaîne similaire à celle de js, par exemple, comment devez-vous l'écrire comme suit ?

$str->trim()->strlen()

Voici trois façons de l'implémenter :

Méthode 1. Utilisez la fonction magique __call combinée avec call_user_func pour implémenter le

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, et gère la relation d'appel en utilisant __call() dans la magie appelée fonction call_user_func , 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. Utiliser 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();

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 : Pour implémenter __call

sans utiliser la fonction magique

, modifiez simplement _call() en trim() fonction :

public function trim($t)
{
    $this->value = trim($this->value, $t);
    return $this;
}

Le point clé est, Renvoie le pointeur $this pour faciliter l’appel de cette dernière fonction.

Pour plus de trois façons PHP d'implémenter des opérations en chaîne, veuillez faire attention au site Web PHP chinois pour les articles connexes !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn