Position actuelle: Accueil> Derniers articles> Aperçu de la connaissance de base de la surcharge PHP et de l'analyse des applications

Aperçu de la connaissance de base de la surcharge PHP et de l'analyse des applications

gitbox 2025-06-28

Qu'est-ce que le rechargement PHP

PHP est un langage dynamique dynamique, ce qui signifie que les variables n'ont pas besoin de types prédéfinis lors de l'exécution de scripts et que les fonctions ne peuvent également pas avoir de types de paramètres ni de types de retour. La surcharge PHP fait référence à la création ou à la modification de propriétés et aux méthodes de classes dynamiquement à l'exécution.

PHP prend en charge deux formulaires de surcharge principale:

1. Attribut Surchargeing: les méthodes magiques __get () et __set () peuvent être utilisées pour accéder dynamiquement ou définir les propriétés de la classe.

2. Surcharge de méthode: les méthodes magiques __Call () et __CallStatic () peuvent être utilisées pour appeler dynamiquement les méthodes de classe.

Surcharge de propriété

__get () Méthode

Lorsque vous accédez à une propriété inexistante, la méthode __get () est appelée. Grâce à cette méthode magique, vous pouvez ajouter dynamiquement des propriétés.

 
class Test {
  private $data = [
    'name' => 'Tom',
    'age' => 18
  ];

  public function __get($name) {
    if (isset($this->data[$name])) {
      return $this->data[$name];
    }
    return null;
  }
}

$test = new Test();
echo $test->name;  // Sortir Tom
echo $test->age;   // Sortir 18
echo $test->gender;  // Sortir null

La méthode __get () accepte un nom de paramètre $ , c'est-à-dire le nom d'attribut. Si la propriété n'existe pas, null est retourné.

Méthode __set ()

Lors de l'attribution d'une valeur à une propriété inoffensive, la méthode __set () est déclenchée. Grâce à cette méthode magique, vous pouvez ajouter dynamiquement un attribut et sa valeur.

 
class Test {
  private $data = [];

  public function __set($name, $value) {
    $this->data[$name] = $value;
  }
}

$test = new Test();
$test->name = 'Tom';
echo $test->name;  // Sortir Tom

La méthode __set () accepte deux paramètres: $ name (nom d'attribut) et $ valeur (valeur d'attribut).

Surcharge de méthode

__Call () Méthode

Lorsqu'une méthode inexistante est appelée, la méthode __Call () est appelée. Avec cette méthode magique, les méthodes peuvent être ajoutées dynamiquement.

 
class Test {
  public function __call($name, $arguments) {
    if ($name == 'add') {
      return array_sum($arguments);
    }
    return null;
  }
}

$test = new Test();
echo $test->add(1, 2, 3);  // Sortir 6
echo $test->subtract(10, 2);  // Sortir null

La méthode __Call () accepte deux paramètres: $ nom (nom de méthode) et $ arguments (paramètres de la méthode). Si la méthode n'existe pas, null est retourné.

__CallStatic () Méthode

Lorsqu'une méthode statique qui n'existe pas est appelée, la méthode __CallStatic () est appelée. Cette méthode est similaire à la méthode __Call () , sauf qu'elle est utilisée dans les méthodes statiques.

 
class Test {
  public static function __callStatic($name, $arguments) {
    if ($name == 'add') {
      return array_sum($arguments);
    }
    return null;
  }
}

echo Test::add(1, 2, 3);  // Sortir 6
echo Test::subtract(10, 2);  // Sortir null

La méthode __CallStatic () est similaire à la méthode __Call () , mais elle ne s'applique qu'aux méthodes statiques.