Heim Backend-Entwicklung PHP-Problem Konzentrieren Sie sich auf den zweiten Parameter der PHP-Methode __call()

Konzentrieren Sie sich auf den zweiten Parameter der PHP-Methode __call()

Apr 12, 2023 am 09:16 AM

Eine der magischen Methoden von PHP ist __call(). Die Methode __call() wird verwendet, um eine nicht vorhandene Methode automatisch aufzurufen. Diese Methode ist in einer Klasse definiert. Wenn ein Objekt eine nicht vorhandene Methode oder eine Methode mit unzureichenden Berechtigungen aufruft, ruft das System automatisch die Methode __call() auf. Die Methode __call() akzeptiert zwei Parameter: Methodenname und Parameterliste. In diesem Artikel konzentrieren wir uns auf den zweiten Parameter der __call()-Methode, nämlich die Parameterliste.

Verwendung der Methode __call()

In PHP ist das Definitionsformat der Methode __call() wie folgt:

public function __call($name, $arguments)
{
    //处理调用$name方法时传递的$arguments参数
}
Nach dem Login kopieren

Der Parameter $name ist der Name der aufgerufenen Methode und der Parameter $arguments ist das übergebene Parameterarray zur Methode.

Hier ist ein Beispiel:

class MyClass
{
    public function __call($name, $arguments)
    {
        echo "调用方法 $name() 时,传递了以下参数:";
        print_r ($arguments);
    }
}

$obj = new MyClass();
$obj->hello("World", 123);
Nach dem Login kopieren

In diesem Beispiel definieren wir eine MyClass-Klasse, die über eine __call()-Methode verfügt, um Methodenaufrufe zu verarbeiten, die in der Klasse nicht vorhanden sind. Wir erstellen ein Objekt von MyClass und rufen seine hello()-Methode auf. Da die Methode hello() in der Klasse MyClass nicht vorhanden ist, ruft das System automatisch die Methode __call() auf und übergibt den Methodennamen hello und die Parameterliste ["World", 123] als Parameter an die Methode __call(). Die __call()-Methode gibt die folgenden Ergebnisse aus:

调用方法 hello() 时,传递了以下参数:Array ( [0] => World [1] => 123 )
Nach dem Login kopieren

Parameterliste der __call()-Methode

In der __call()-Methode ist der zweite Parameter $arguments ein Array, das alle von der aufgerufenen Methode übergebenen Parameter enthält. Diese Parameter werden in $arguments als Array gespeichert. Innerhalb der Methode __call() können wir Code ähnlich dem folgenden verwenden, um diese Parameter abzurufen:

public function __call($name, $arguments)
{
    $arg_count = count($arguments);
    for($i=0; $i<$arg_count; $i++){
        echo $arguments[$i]."<br>";
    }
}
Nach dem Login kopieren

In diesem Beispiel verwenden wir die Funktion count(), um die Anzahl der Parameter zu zählen, und verwenden dann eine for-Schleife, um die auszugeben Parameter nacheinander.

Anwendungsszenarien magischer Methoden

Durch die Verwendung der __call()-Methode können wir unsere Klassen flexibler und einfacher erweiterbar machen. Wenn die definierte Klasse Methoden dynamisch aufrufen muss, kann uns die Methode __call() eine große Hilfe sein. Hier sind einige Anwendungsszenarien für die __call()-Methode:

  1. Dynamisches Aufrufen von Methoden für Objekte

Webanwendungen haben normalerweise viele verschiedene Module und Operationen. Wenn die definierte Klasse Methoden dynamisch aufrufen muss, ist es besser, __call() zu verwenden. Zum Beispiel:

class Show    
{    
    public function showtext() {    
        return '这是一个文本框';    
    }    
    public function showbutton() {    
        return '这是一个按钮';    
    }    
    public function showselect() {    
        return '这是一个下拉列表';    
    }   
    public function __call($name, $arguments) {    
        return '您调用的方法:'.$name.'(参数:'.implode(',',$arguments).')不存在';    
    }    
}  
$obj = new Show();  
echo $obj->showText().'<br>';    
echo $obj->showButton().'<br>';    
echo $obj->showSelect('',2,3).'<br>';    
echo $obj->test('param1',2).'<br>';
Nach dem Login kopieren

Das Ausgabeergebnis ist:

这是一个文本框
这是一个按钮
这是一个下拉列表
您调用的方法:test(参数:param1,2)不存在
Nach dem Login kopieren

Durch Aufrufen der Methode __call() können wir Methodenaufrufe in der Klasse dynamisch implementieren und nicht vorhandene Methodenaufrufe einheitlich verarbeiten.

  1. Schnittstellenklassenerweiterung implementieren

Manchmal müssen wir der vorhandenen Codebasis neue Methoden hinzufügen, aber die vorhandenen Klassen können nicht direkt geändert werden. In diesem Fall können Sie die Methode __call() verwenden, um eine Delegate-Methode zu implementieren und den Aufruf an eine andere Klasse weiterzuleiten. Zum Beispiel:

interface InterfaceA{ 
    public function sayHello($name); 
}

class ClassA implements InterfaceA { 
  public function sayHello($name){                  
      echo 'ClassA: Hello,'.$name.'<br>';                      
  } 
} 

class ClassB { 
  public function __call($name,$arguments){                  
      if($name == 'sayHello'){                     
        $obj = new ClassA(); 
        return $obj->sayHello($arguments[0]); 
      } 
  }   
} 

$obj = new ClassB(); 
$obj->sayHello('World');
Nach dem Login kopieren

In diesem Beispiel definieren wir eine Schnittstelle InterfaceA und eine Klasse ClassA, die sie implementiert. Dann haben wir eine ClassB-Klasse definiert und die __call()-Methode darin implementiert, wobei wir die Delegation verwendet haben, um die ClassA-Methode aufzurufen. Schließlich erstellen wir ein Objekt von ClassB und rufen dessen Methode sayHello() auf. Da die Methode sayHello() nicht in ClassB implementiert ist, ruft das System automatisch die Methode __call() auf und übergibt den Methodennamen und die Methodenparameter als Parameter. Die Methode __call() entspricht hier einem Repeater.

Zusammenfassung

In diesem Artikel haben wir eine sehr praktische magische Methode __call() in PHP vorgestellt. Wir haben etwas über die Definition der Methode __call(), ihren Aufruf und die Rolle der Parameterliste gelernt. Durch die Verwendung der Methode __call() können wir einer Klasse die Möglichkeit hinzufügen, Methoden dynamisch aufzurufen, wodurch unser Programm flexibler und einfacher erweiterbar wird. Durch diesen Artikel sollten Sie die Methode __call() besser verstehen und sie besser in der Praxis anwenden können.

Das obige ist der detaillierte Inhalt vonKonzentrieren Sie sich auf den zweiten Parameter der PHP-Methode __call(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8 JIT (Just-in-Time) -Kompilation: Wie es die Leistung verbessert. PHP 8 JIT (Just-in-Time) -Kompilation: Wie es die Leistung verbessert. Mar 25, 2025 am 10:37 AM

Die JIT -Kompilierung von PHP 8 verbessert die Leistung, indem häufig ausgeführte Code in den Maschinencode zusammengestellt wird, um Anwendungen mit schweren Berechnungen zugute und die Ausführungszeiten zu reduzieren.

OWASP Top 10 PHP: Beschreiben und mildern gemeinsame Schwachstellen. OWASP Top 10 PHP: Beschreiben und mildern gemeinsame Schwachstellen. Mar 26, 2025 pm 04:13 PM

In dem Artikel werden OWASP Top 10 Schwachstellen in PHP- und Minderungsstrategien erörtert. Zu den wichtigsten Problemen gehören die Injektion, die kaputte Authentifizierung und XSS mit empfohlenen Tools zur Überwachung und Sicherung von PHP -Anwendungen.

PHP Secure-Datei-Uploads: Verhindern von Sicherheitslücken im Zusammenhang mit Datei. PHP Secure-Datei-Uploads: Verhindern von Sicherheitslücken im Zusammenhang mit Datei. Mar 26, 2025 pm 04:18 PM

In dem Artikel wird das Sicherung von PHP -Dateien -Uploads erläutert, um Schwachstellen wie die Code -Injektion zu verhindern. Es konzentriert sich auf die Dateitypvalidierung, den sicheren Speicher und die Fehlerbehandlung, um die Anwendungssicherheit zu verbessern.

PHP -Verschlüsselung: Symmetrische und asymmetrische Verschlüsselung. PHP -Verschlüsselung: Symmetrische und asymmetrische Verschlüsselung. Mar 25, 2025 pm 03:12 PM

In dem Artikel wird die symmetrische und asymmetrische Verschlüsselung in PHP erörtert und ihre Eignung, Leistung und Sicherheitsunterschiede verglichen. Die symmetrische Verschlüsselung ist schneller und für Massendaten geeignet, während asymmetrisch für den sicheren Schlüsselaustausch verwendet wird.

PHP -Authentifizierung & amp; Autorisierung: sichere Implementierung. PHP -Authentifizierung & amp; Autorisierung: sichere Implementierung. Mar 25, 2025 pm 03:06 PM

In dem Artikel wird die Implementierung einer robusten Authentifizierung und Autorisierung in PHP erörtert, um den nicht autorisierten Zugriff zu verhindern, Best Practices zu beschreiben und sicherheitsrelevante Tools zu empfehlen.

PHP -CSRF -Schutz: Wie Sie CSRF -Angriffe verhindern. PHP -CSRF -Schutz: Wie Sie CSRF -Angriffe verhindern. Mar 25, 2025 pm 03:05 PM

In dem Artikel werden Strategien erörtert, um CSRF-Angriffe in PHP zu verhindern, einschließlich der Verwendung von CSRF-Token, selben Cookies und ordnungsgemäßem Sitzungsmanagement.

Was ist der Zweck von vorbereiteten Aussagen in PHP? Was ist der Zweck von vorbereiteten Aussagen in PHP? Mar 20, 2025 pm 04:47 PM

Vorbereitete Aussagen in PHP erhöhen die Sicherheit und Effizienz der Datenbank durch Verhinderung der SQL -Injektion und Verbesserung der Abfrageleistung durch Zusammenstellung und Wiederverwendung.

PHP -API -Rate Begrenzung: Implementierungsstrategien. PHP -API -Rate Begrenzung: Implementierungsstrategien. Mar 26, 2025 pm 04:16 PM

In dem Artikel werden Strategien zur Implementierung der API-Rate in PHP erörtert, einschließlich Algorithmen wie Token-Bucket und Leaky Bucket sowie Bibliotheken wie Symfony/Rate-Limiter. Es deckt auch die Überwachung, die dynamischen Einstellungsgeschwindigkeiten und die Hand ab

See all articles