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

高洛峰
Libérer: 2023-03-05 16:04:01
original
1208 Les gens l'ont consulté

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))
Copier après la connexion
Copier après la connexion

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

$str->trim()->strlen()
Copier après la connexion
Copier après la connexion

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();
Copier après la connexion
Copier après la connexion

Script d'exécution du terminal :

php test.php 
8
Copier après la connexion
Copier après la connexion

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();
Copier après la connexion
Copier après la connexion

Description : La fonction

array_unshift(array,value1,value2,value3...)
Copier après la connexion
Copier après la connexion

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;
}
Copier après la connexion
Copier après la connexion

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))
Copier après la connexion
Copier après la connexion

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()
Copier après la connexion
Copier après la connexion

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();
Copier après la connexion
Copier après la connexion

Script d'exécution du terminal :

php test.php 
8
Copier après la connexion
Copier après la connexion

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();
Copier après la connexion
Copier après la connexion

Description : La fonction

array_unshift(array,value1,value2,value3...)
Copier après la connexion
Copier après la connexion

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;
}
Copier après la connexion
Copier après la connexion

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 !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal