Heim >Backend-Entwicklung >PHP-Tutorial >Verwendung von öffentlichen, privaten, geschützten, abstrakten und anderen Schlüsselwörtern in PHP

Verwendung von öffentlichen, privaten, geschützten, abstrakten und anderen Schlüsselwörtern in PHP

小云云
小云云Original
2018-01-03 09:45:201597Durchsuche

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 = &#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();//直接报错
?>

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, abstrakt
class 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:

Verwendungsbeispiele und Differenzanalyse von öffentlich, privat, geschützt

php objektorientiert öffentlich privat protected Drei Beispiele für Modifikatorcodes

Eine kurze Diskussion des Umfangs der Zugriffsmodifikatoren private, protected und public in PHP

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!

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