Maison  >  Article  >  développement back-end  >  Quelles sont les méthodes de mise en œuvre du fonctionnement de la chaîne PHP ?

Quelles sont les méthodes de mise en œuvre du fonctionnement de la chaîne PHP ?

青灯夜游
青灯夜游original
2021-05-28 17:36:222361parcourir

Comment implémenter le fonctionnement en chaîne en 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 à implémenter.

Quelles sont les méthodes de mise en œuvre du fonctionnement de la chaîne PHP ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3

Il existe de nombreuses chaînes dans php Fonction, par exemple, vous souhaitez d'abord filtrer les espaces à la fin d'une 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 à. qu'en js, par exemple, comment devriez-vous l'é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

Pensé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 L'appel. La relation est gérée en utilisant call_user_func dans la fonction magique appelée __call(). 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(&#39;0&#39;)->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(&#39;0&#39;)->strlen();

Instructions :

array_unshift(array,value1,value2,value3...)

array_unshift() la fonction 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.

Méthode 3 : Au lieu d'utiliser la fonction magique __call, utilisez la fonction trim() 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 $this pour faciliter l'appel de cette dernière fonction.

Apprentissage 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!

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