Heim >Backend-Entwicklung >PHP-Tutorial >Verwendung von öffentlichen, privaten, geschützten, abstrakten und anderen Schlüsselwörtern in PHP
Dieser Artikel teilt Ihnen hauptsächlich einen Artikel mit, in dem die Verwendung öffentlicher, privater, geschützter, abstrakter und anderer Schlüsselwörter in PHP erörtert wird. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich ist. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.
Häufig verwendete Schlüsselwörter in PHP
PHP enthält viele Schlüsselwörter, die Funktionen und Klassen einschränken: „abstrakt“, „final“, „schnittstelle“, „öffentlich“, „geschützt“, „privat“, „statisch“ und so weiter wird die Verwendung jedes einzelnen analysieren und klären.
Schlüsselwörter öffentlich, privat, geschützt für Variablen und Methoden
öffentlich hat die größten Berechtigungen. Es kann von Unterklassen verwendet werden und kann auch Aufrufe nach der Instanziierung unterstützen geschützt, und auf die Zugriffsberechtigung kann nur in Unterklassen und dieser Klasse zugegriffen werden
private bedeutet privat und kann nur in der aktuellen Klasse aufgerufen werden
Das Schlüsselwort static für Variablen und Methoden<?php // /** * Define MyClass */ class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; 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();//直接报错 ?>
Die Funktion von static besteht darin, den Aufruf von Werten oder Methoden in der Klasse ohne Instanziierung zu ermöglichen. Gleichzeitig hat die durch static geänderte Variable den gleichen Wert. Die Speicherfunktion ist beispielsweise das Ergebnis von Das Ausführen ohne die Verwendung von Statik lautet wie folgt:
Wenn wir der Variablen Statik hinzufügen, sieht es so aus<?php function test(){ $var=1; echo $var."</br>"; $var++; } test();// 1 test();// 1 test();// 1 ?>Sie können es hier möglicherweise nicht verstehen Um die Vorteile dieser Vorgehensweise in PHP zu erkennen, gehen wir zunächst davon aus, dass der Leser auch 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 als nächste Operation speichern Darauf basierend müssen wir ein Programm schreiben.
<?php function test(){ static $var=1; echo $var."</br>"; $var++; } test();// 1 test();// 2 test();// 3 ?>Dies führt dazu, dass Glo in globale Variablen gelangt, was zu Speicherverlusten führt (Speicherverluste beziehen sich auf Variablen, die zu viel Speicherplatz belegen und nicht freigegeben werden.)
var glo=0; function test(){ glo++; document.writeln(glo); } test(); test(); test();Im Vergleich zu Sprachen, die nicht statisch definieren, hat es den Vorteil, Variablen beizubehalten, keinen Speicherverlust zu verursachen und nicht leicht dazu zu führen, dass globale Variablen missbraucht werden (da der Bereich nicht global ist)
<script> var glo=0; function test(){ glo++; document.writeln(glo); } test();// 1 test();// 2 test();// 3 </script>Das Schlüsselwort final für Klasse und Methode
$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
final kann nur zum Ändern von Klasse und Funktion verwendet werden. Nach der Verwendung von final kann es nicht direkt vererbt werden
Spezielle Schlüsselwörter Schnittstelle, abstraktclass BaseClass { public $public = 'Public'; 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"; } }
Die Bedeutung von Schnittstelle besteht darin, den Programmierstil zu standardisieren. Stellen Sie sich vor, dass wir diese Schnittstellenklasse verwenden müssen, um die Methoden zu implementieren Im Inneren spielt es eine Rolle bei der einheitlichen Namensgebung.
Eine einzelne Vererbung zwischen Schnittstellen wird durch Erweiterungen erreicht. Die Beziehung zwischen Klasse und Schnittstelle wird durch Implementierungen hergestellt.
Beispielcode:
Die Die abstrakte Funktion ist eigentlich dieselbe wie die Schnittstelle, aber alle Methoden in der Schnittstelle müssen implementiert werden. In einer abstrakt modifizierten Klasse kann es jedoch eine oder mehrere abstrakte Methoden geben, sodass wir es so verstehen können, dass die Schnittstelle eine ist Sonderfall von abstrakt (wenn alle Methoden abstrakte Methoden sind, müssen sie implementiert werden). Abstract weist die folgenden Merkmale auf:<?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. } } ?>
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:
Kennt jeder deren Verwendung? Holen Sie es sich schnell.<?php abstract class shopping { public function buy() { echo "buy"; } public function loan() { echo "loan"; } } class leslieBuy extends shopping { } //$test1=new shopping;//直接语法错误 $leslieSie = new leslieBuy; $leslieSie->loan();//打印出loan ?>
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonVerwendung 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!