Aktueller Standort: Startseite> Neueste Artikel> Überblick über das Grundwissen über PHP -Überladung und Anwendungsanalyse

Überblick über das Grundwissen über PHP -Überladung und Anwendungsanalyse

gitbox 2025-06-28

Was ist PHP Reload

PHP ist eine dynamische typisierte Sprache, was bedeutet, dass Variablen beim Ausführen von Skripten keine vordefinierten Typen benötigen, und Funktionen können auch keine Parametertypen oder Rückgabetypen haben. PHP -Überlast bezieht sich auf dynamisches Erstellen oder Ändern von Eigenschaften und Methoden von Klassen zur Laufzeit.

PHP unterstützt zwei Hauptüberlastungsformulare:

1. Attributüberladung: Die magischen Methoden __get () und __set () können verwendet werden, um die Eigenschaften der Klasse dynamisch zugreifen oder festlegen.

2. Methodenüberladung: Die magischen Methoden __call () und __callstatic () können verwendet werden, um die Klassenmethoden dynamisch aufzurufen.

Überlastung von Eigenschaften

__get () Methode

Bei dem Zugriff auf eine nicht existierende Eigenschaft wird die __get () -Methode aufgerufen. Durch diese magische Methode können Sie dynamisch Eigenschaften hinzufügen.

 
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;  // Ausgabe Tom
echo $test->age;   // Ausgabe 18
echo $test->gender;  // Ausgabe null

Die __Get () -Methode akzeptiert einen Parameter $ namens , dh den Attributnamen. Wenn die Eigenschaft nicht existiert, wird Null zurückgegeben.

__set () Methode

Bei der Zuweisung eines Werts einer extremen Eigenschaft wird die __set () -Methode ausgelöst. Durch diese magische Methode können Sie dynamisch ein Attribut und seinen Wert hinzufügen.

 
class Test {
  private $data = [];

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

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

Die Methode __set () akzeptiert zwei Parameter: $ Name (Attributname) und $ value (Attributwert).

Methodenüberlastung

__call () Methode

Wenn eine nicht existierende Methode aufgerufen wird, wird die Methode __call () aufgerufen. Mit dieser magischen Methode können Methoden dynamisch hinzugefügt werden.

 
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);  // Ausgabe 6
echo $test->subtract(10, 2);  // Ausgabe null

Die Methode __call () akzeptiert zwei Parameter: $ Name (Methodenname) und $ Argumente (Methodenparameter). Wenn die Methode nicht vorhanden ist, wird NULL zurückgegeben.

__callstatic () Methode

Wenn eine statische Methode, die nicht existiert, aufgerufen wird, wird die Methode __callstatic () aufgerufen. Diese Methode ähnelt der __call () -Methode, mit der Ausnahme, dass sie in statischen Methoden verwendet wird.

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

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

Die __callstatic () -Methode ähnelt der __call () -Methode, gilt jedoch nur für statische Methoden.