Methodenüberladung
Die Funktionsnamen sind unterschiedlich. Die Anzahl oder Parametertypen der Funktion sind unterschiedlich, sodass derselbe Funktionsname aufgerufen werden kann, aber verschiedene Funktionen unterschieden werden können
Klasse A{.
public function test1(){
echo "test1";}
public function test1($a){
echo "test1 hhh";}
}
Überladen
$a=newA();
$a->test1();
$a->test1(222);
Die obige Verwendung ist falsch
Implementierung zur Überladung magischer Funktionsmethoden
Klasse A{
öffentliche Funktion test1($p){
echo "Akzeptiert einen Parameter";}
öffentliche Funktion test1($p){
echo "Akzeptiert zwei Parameter";
🎜>Stellen Sie einen __call bereit
__call ist ein Objekt, das eine bestimmte Methode aufruft. Wenn die Methode nicht vorhanden ist, ruft das System automatisch die __call
Funktion __call($method,$p) {
var_dump($p);
if(count($p)==1){
$this->test1($p );
}else if(count($p)==2){
$this->test2($p);
}
}
}
$a=newA();
$a->test(1,2);
__set,__get,__construct,__destruct,__call,__isset,__unset
__LINE__Wie viele Zeilen werden ausgegeben
,__DIR__,
__CLASS__Name der Ausgabeklasse
class Animal{
public $name;
protected $price;
function cry(){
echo "Weiß nicht";}
}
//override
function cry(){
echo "puppy";}
}
class Pig erweitert Animal{
//Override
function cry(){
echo "Little Pig";}
}
$dog1=new Dog();
$pig=1new Pig();
$pig1->cry();
? >
Über das Umschreiben:
1 Um das Umschreiben zu implementieren , der Name der Methode der Unterklasse muss genau mit der Parameterliste übereinstimmen, die Parameternamen müssen jedoch nicht identisch sein
2. Wenn die Unterklasse den Aufruf einer Methode der übergeordneten Klasse (öffentlich) erfordert /protected), Sie können den Namen der übergeordneten Klasse:: Methodenname (Parameter ...), den Namen der übergeordneten Klasse:: Methodenname (Parameter ...)
verwenden. 3. Bei der Implementierung der Methodenabdeckung können die Zugriffsmodifikatoren unterschiedlich sein. Sie müssen jedoch den Zugriffsbereich der Unterklasse>= Zugriffsbereich der übergeordneten Klasse
erfüllen
Wenn die Unterklasse die Methode der übergeordneten Klasse nicht überschreibt, ruft $call->cry() die übergeordnete Klasse auf und die Unterklasse überschreibt die Methode der übergeordneten Klasse und nennt sich selbst Cry( )