Maison  >  Article  >  développement back-end  >  Il existe plusieurs façons d'implémenter des opérations en chaîne en PHP

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

php中世界最好的语言
php中世界最好的语言original
2017-12-20 19:32:231598parcourir

Les trois méthodes d'opérations en chaîne utilisant PHP consistent à utiliser l'appel magique fonction combiné avec call_user_func, à utiliser l'appel de fonction magique combiné avec call_user_func_array, et sans utiliser l'appel de fonction magique.

Il existe de nombreuses chaînefonctions en php. Par exemple, vous devez 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 à 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 l'appel de fonction magique combiné avec call_user_func pour implémenter

Idée : définissez d'abord une classe de chaîne StringHelper, constructeur attribuez directement une valeur, puis appelez les fonctions trim() et strlen() dans une chaîne, via l'appel de fonction magique ( ) 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(&#39;0&#39;)->strlen();


Script d'exécution du terminal :

php test.php


Méthode 2 : Utilisez l'appel de fonction magique combiné 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();

,value2,value3...)

La fonction 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.

Troisième méthode, n'utilisez pas l'appel de fonction magique pour obtenir

Modifiez simplement _call() en fonction trim() :

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

Troisième méthode, n'utilisez pas l'appel de fonction magique pour obtenir

Modifiez simplement _call() en fonction trim() :

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

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

Je pense que vous maîtrisez les méthodes après avoir lu ces cas. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
public function trim($t)
{
  $this->value = trim($this->value, $t);
  return $this;
}

Lecture connexe :


Comment PHP résout le problème du trafic important sur les sites Web et de la concurrence élevée

La fonction personnalisée php génère des cartésiens Méthode du produit


Mise en œuvre du timing de vente flash de produits PHP (résoudre une solution à trafic important)

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