Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung von Beispielen für PHP-bezogene Wissenspunkte

Zusammenfassung von Beispielen für PHP-bezogene Wissenspunkte

高洛峰
高洛峰Original
2016-12-21 13:54:571003Durchsuche

Die Beispiele in diesem Artikel fassen die relevanten Wissenspunkte der PHP-Klasse zusammen. Geben Sie es wie folgt als Referenz an alle weiter:

Endgültige Klasse und endgültige Methode

Wenn eine Methode in der übergeordneten Klasse als endgültig deklariert wird, kann die Unterklasse die Methode nicht überschreiben. Wenn eine Klasse als final deklariert ist, kann sie nicht vererbt werden.

final class a{}
class a{
  final public function A(){}
}

Abstrakte Klassen und abstrakte Methoden

abstract class a {
  public abstract function func();
}
class A extends a{
  public function func(){}
}

① Eine Klasse Sie können abstract verwenden, um eine abstrakte Klasse zu deklarieren. Eine abstrakte Klasse ist eine Klasse, die nicht instanziiert werden kann und nur als übergeordnete Klasse für andere Klassen verwendet wird.

abstract class name{}

② Eine Methode kann mit abstrakten Methoden als abstrakte Methode deklariert werden; abstrakte Methoden müssen nur den Methodenheader deklarieren und benötigen keinen Methodenkörper in den geschweiften Klammern.

abstract public function name($val);

③ Wenn eine Klasse eine abstrakte Methode enthält, muss die Klasse als abstrakte Klasse deklariert werden.

④ Wenn eine Unterklasse von einer abstrakten Klasse erbt, kann die Unterklasse nicht alle abstrakten Methoden in der übergeordneten Klasse implementieren, es sei denn, die Unterklasse bleibt auch weiterhin eine abstrakte Klasse.

⑤ Wenn eine Unterklasse eine Methode einer abstrakten übergeordneten Klasse implementiert, kann der Zugriffskontrollbereich nicht reduziert werden und die Methodenparameter müssen ebenfalls konsistent (neu geschrieben) sein.

Schnittstelle

Schnittstelle kann als Abstraktion einer abstrakten Klasse auf höherer Ebene betrachtet werden, man kann sie als Sonderfall einer abstrakten Klasse bezeichnen

interface a{
  function func();
}
class A implements a {
  function func(){}
}

Klasse: Attribute, Klassenkonstanten, Methoden

Abstrakte Klasse: Attribute, Klassenkonstanten, abstrakte Methoden

Schnittstelle: Schnittstellenkonstanten, abstrakte Methoden

① Im Vergleich zu abstrakten Klassen können Schnittstellen eine „Mehrfachvererbung“ implementieren

class A implements a,b,c{}

② Eine Schnittstelle kann nur eine Schnittstelle erben

interface a extends b{}

③ Die Methoden sind alle abstrakte Methoden ohne abstrakte Modifikation, d. h. die untergeordneten Klassen implementieren entweder die Schnittstellenmethoden (implementiert) oder werden auch als abstrakte Methoden deklariert

Überladungstechnologie

1. Attributüberladung: Wenn Sie ein nicht vorhandenes Attribut verwenden, wird eine vordefinierte Methode in der Klasse aufgerufen, um die Daten zu verarbeiten Wenn das Attribut nicht verwendet wird, führen Sie Folgendes aus: Verarbeitung

① Wert: Rufen Sie automatisch __get()

② in der Klasse auf. Zuweisung: Rufen Sie automatisch __set()

③ in der Klasse auf. Bestimmen Sie, ob es existiert : __isset automatisch in der Klasse aufrufen ()
④ Zerstörung: __unset() automatisch in der Klasse aufrufen

Voraussetzung ist, dass diese Methoden vordefiniert sind, andernfalls wird ein Fehler gemeldet

<?php
class bee{
  public $ol = array();
  public function __get($key){
    if(isset($this->ol[$key])){
      return $this->ol[$key];
    }
    return $key.&#39; not exists&#39;;
  }
  public function __set($key,$val){
    $this->ol[$key] = $val;
  }
  public function __isset($key){
    if(isset($this->ol[$key])){
      return true;
    }
    return false;
  }
  public function __unset($key){
    unset($this->ol[$key]);
  }
}
$obj = new bee();
echo $obj->one;
echo &#39;<br>&#39;;
$obj->one = 1;
echo $obj->one;
echo &#39;<br>&#39;;
var_dump(isset($obj->one));

Die Laufergebnisse sind wie folgt:

one not exists
1
boolean true

2. Methodenüberladung: Wenn eine nicht vorhandene Methode verwendet wird, wird die voreingestellte Methode in der Klasse aufgerufen. Eine definierte Methode wird verwendet, um dieses Verhalten zu behandeln.

Führen Sie für Anwendungsszenarien, in denen die Methode nicht verwendet wird, die folgende Verarbeitung aus

① Rufen Sie unzugängliche Methoden im Objekt auf: __call()

② Rufen Sie unzugängliche Methoden im statischen Modus auf: __callStatic()


<?php
class bee{
  public function __call($name,$arr){
    echo &#39;<br>&#39;;
    echo &#39;function &#39;.$name.&#39; not exist&#39;;
  }
  static function __callStatic($name,$arr){
    echo &#39;<br>&#39;;
    echo &#39;function &#39;.$name.&#39; not exist&#39;;
  }
  /*public function __call($name,$arr){
    $num = count($arr);
    if($num<1){
      $name();
    }else{
      $name = $name.&#39;_one&#39;;
      $name($arr[0]);
    }
  }*/
}
$obj->func();
bee::staFunc();
/*$obj->func(1);
function func(){
  echo &#39;<br>&#39;;
  echo &#39;no.0&#39;;
}
function func_one($val){
  echo &#39;<br>&#39;;
  echo &#39;no.&#39;.$val;
}*/

Die laufenden Ergebnisse sind wie folgt:

function func not exist
function staFunc not exist

Hinweis: Die oben genannten Methoden sind alle magische Methoden, alle mit Parametern

Das hoffe ich Der Artikel wird für jeden hilfreich sein, der sich mit PHP-Programmierung beschäftigt.

Stellungnahme:
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