Heim  >  Artikel  >  Backend-Entwicklung  >  Besprechen Sie ausführlich die Verwendung von öffentlichen, privaten, geschützten, abstrakten und anderen Schlüsselwörtern in PHP

Besprechen Sie ausführlich die Verwendung von öffentlichen, privaten, geschützten, abstrakten und anderen Schlüsselwörtern in PHP

jacklove
jackloveOriginal
2018-07-04 17:41:161887Durchsuche

Der unten stehende Herausgeber wird einen Artikel mit Ihnen teilen, der die Verwendung von öffentlichen, privaten, geschützten, abstrakten und anderen Schlüsselwörtern in PHP ausführlich bespricht. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich sein wird. Folgen wir dem Editor und werfen wir einen Blick darauf.

Häufig verwendete Schlüsselwörter in PHP

PHP enthält viele Einschränkungen für Funktionen und Klassen Dazu gehören normalerweise Abstract, Final, Interface, Public, Protected, Private, Static usw. Im Folgenden analysieren und sortieren wir ihre Verwendung.

Schlüsselwörter öffentlich, privat, geschützt für Variablen und Methoden

öffentlich hat die größte Autorität und kann von Unterklassen verwendet oder unterstützt werden, wenn es später aufgerufen wird Instanziierung,

geschützt bedeutet geschützt, und auf Zugriffsberechtigungen kann nur in Unterklassen zugegriffen werden, und diese Klasse

privat bedeutet privat, nur in der aktuellen Klasse zugänglich

<?php
//
/**
* Define MyClass
*/
class MyClass
{
 public $public = &#39;Public&#39;;
 protected $protected = &#39;Protected&#39;;
 private $private = &#39;Private&#39;;
 public function printHello()
 {
 echo $this->public;
 echo $this->protected;
 echo $this->private;
 }
 protected function pro_test(){
 var_dump(1);
 }
}
$obj = new MyClass();
echo $obj->public; // 这行能被正常执行
//echo $obj->protected; // 这行会产生一个致命错误
//echo $obj->private; // 这行也会产生一个致命错误
$obj->printHello(); // 输出 Public、Protected 和 Private
$obj->pro_test();//直接报错
?>

Schlüsselwort static

Die Funktion von static besteht darin, Werte oder Methoden zu ermöglichen In einer Klasse ohne Instanziierung aufgerufen. Gleichzeitig haben statisch modifizierte Variablen die Funktion, Werte zu speichern. Wenn wir beispielsweise keine statischen Variablen verwenden, ist das Ergebnis wie folgt:

<?php
function test(){
 $var=1;
 echo $var."</br>";
 $var++;
}
test();// 1
test();// 1
test();// 1
?>

Wenn wir der Variablen Statik hinzufügen, sieht es so aus

<?php
function test(){
 static $var=1;
 echo $var."</br>";
 $var++;
}
test();// 1
test();// 2
test();// 3
?>

Hier können Sie es vielleicht nicht erkennen Nehmen wir also zunächst an, dass der Leser mit JS vertraut ist. In JS gibt es kein statisches Schlüsselwort. Wenn wir also ein Programm implementieren möchten, können wir die Ergebnisse jeder Programmoperation nach Bedarf speichern Schreiben Sie ein Programm basierend auf der nächsten Operation wie dieser.

var glo=0;
 function test(){
 glo++;
 document.writeln(glo);
 }
 test();
 test();
 test();

Dies führt dazu, dass Glo in globale Variablen gelangt, was zu Speicherlecks führt (Speicherlecks beziehen sich auf Variablen, die zu viel Speicherplatz belegen). und wird nicht freigegeben)

<script>
 var glo=0;
 function test(){
 glo++;
 document.writeln(glo);
 }
 test();// 1
 test();// 2
 test();// 3 
</script>

Im Vergleich zu Sprachen, die nicht statisch definieren, hat es den Vorteil, dass Variablen beibehalten werden. Kein Speicherverlust führt nicht leicht dazu, dass globale Variablen missbraucht werden (da der Gültigkeitsbereich nicht global ist)

$age=0;
$age++;
function test1() {
 static $age = 100;
 $age++;
 echo $age."</br>";
}
function test2() {
 static $age = 1000;
 $age++;
 echo $age."</br>";
}
test1(); // 101
test2(); // 1001

Der Schlüssel zu Klassen und Methoden Das Wort final

final kann nur zum Ändern von Klasse und Funktion verwendet werden. Nach der Verwendung von final kann der folgende Code beispielsweise nicht direkt einen Fehler melden

class BaseClass {
 public $public = &#39;Public&#39;;
 function test() {
 echo "BaseClass::test() called\n";
 }
 final public function moreTesting() {
 echo "BaseClass::moreTesting() called\n";
 }
}
class ChildClass extends BaseClass {
 public function moreTesting() {
 echo "ChildClass::moreTesting() called\n";
 }
}

Spezielle Schlüsselwörter Schnittstelle, abstrakt

Die Bedeutung von Schnittstelle besteht darin, den Programmierstil zu standardisieren ist implementiert. Wenn wir eine Schnittstelle haben, müssen wir bei Verwendung dieser Schnittstellenklasse die darin enthaltenen Methoden implementieren, was bei der einheitlichen Benennung eine Rolle spielt.

Eine einzelne Vererbung zwischen Schnittstellen wird durch Erweiterungen erreicht. Die Beziehung zwischen Klasse und Schnittstelle wird durch Implementierungen hergestellt.

Beispielcode:

rrree

Die Funktion von Abstract ist eigentlich dieselbe wie die von Interface, aber alle Methoden in der Schnittstelle müssen implementiert werden, aber in durch Abstract modifizierten Klassen kann es eine oder mehrere abstrakte Modifikationsmethoden geben, also wir kann verstehen, dass die Schnittstelle ein Sonderfall der Abstraktion ist (wenn alle Methoden abstrakte Methoden sind, müssen sie implementiert werden). Abstract weist die folgenden Merkmale auf:

1. Solange mindestens eine Methode in der Klasse das Schlüsselwort abstract verwendet, ist die Klasse abstrakt und das entsprechende Schlüsselwort muss hinzugefügt werden

2. Abstrakte Methoden haben nur den Deklarationsteil der Methode und keinen Methodenkörper.

Aber meiner Meinung nach gibt es in der praktischen Anwendung von Zusammenfassungen mehrere Szenarien wie dieses.

1 Standardisieren Sie die Benennungsregeln für öffentliche Teile bei der Mehrpersonenprogrammierung (ohne Erklärung, das Prinzip ist dasselbe als Schnittstelle)

2. Um zu verhindern, dass das übergeordnete Element direkt instanziiert wird, verwenden Sie den Stilcode

wie folgt:

<?php
interface testA{
 function funcA();
}
interface testB{
 function funcB();
}
interface testC extends testA {
 function funcC();
}
class run implements testC ,testB {
 public function funcA()
 {
 // TODO: Implement funcA() method.
 }
 public function funcB()
 {
 // TODO: Implement funcB() method.
 }
 public function funcC()
 {
 // TODO: Implement funcC() method.
 }
}
?>

Der obige Artikel beschreibt ausführlich die Verwendung von öffentlichen, privaten, geschützten, abstrakten und anderen Schlüsselwörtern in PHP. Dies ist der gesamte vom Herausgeber geteilte Inhalt. Ich hoffe, dass er Ihnen eine Referenz geben kann, und ich hoffe, dass Sie PHP unterstützen Chinesische Website.

Artikel, die Sie interessieren könnten:

Erklärung, wie PHP eine neue Array-Instanz mit demselben Wert in einem Array bilden kann

Detaillierte Erklärung zur Lösung des Problems inkonsistenter PHP-Stringlängen

Die Befehlszeile führt die Konfigurationsmethoden $argv und $argc im aus php script_php example

Das obige ist der detaillierte Inhalt vonBesprechen Sie ausführlich die Verwendung von öffentlichen, privaten, geschützten, abstrakten und anderen Schlüsselwörtern in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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