Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen öffentlich und privat in PHP?

Was ist der Unterschied zwischen öffentlich und privat in PHP?

青灯夜游
青灯夜游Original
2021-11-02 18:55:384445Durchsuche

Unterschied: 1. Wenn ein Klassenmitglied als öffentlich deklariert ist, kann von überall aus darauf zugegriffen werden. Wenn ein Klassenmitglied als privat deklariert ist, kann nur die Klasse darauf zugreifen, die das Mitglied definiert. 2. Public ist ein öffentlicher Typ mit der größten Autorität und kann intern, in einer Instanz aufgerufen usw. aufgerufen werden. Private ist ein privater Typ und kann nur in dieser Klasse verwendet werden.

Was ist der Unterschied zwischen öffentlich und privat in PHP?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

öffentlich, privat und geschützt werden als Zugriffsmodifikatoren bezeichnet. Genau wie C++ verfügt auch PHP über drei Zugriffsmodifikatoren: public, private und protected. Die Sichtbarkeit einer Eigenschaft, Methode oder Konstante kann definiert werden, indem der Deklaration diese Schlüsselwörter vorangestellt werden.

1. Wenn ein Klassenmitglied als öffentlich deklariert ist, kann von überall darauf zugegriffen werden.

Öffentlich hat die größten Berechtigungen und kann interne Anrufe, Instanzaufrufe usw. tätigen.

2. Wenn ein Klassenmitglied als geschützt deklariert ist, kann nur innerhalb der Klasse selbst sowie in Vererbungs- und übergeordneten Klassen darauf zugegriffen werden.

protected ist ein geschützter Typ, der zum Aufrufen dieser Klasse und geerbter Klassen verwendet wird.

3. Wenn ein Klassenmitglied als privat deklariert ist, kann nur die Klasse darauf zugreifen, die das Mitglied definiert.

private ist ein privater Typ und kann nur in dieser Klasse verwendet werden.

Beispiel:

<?php
error_reporting(E_ALL);
class test{
 public $public;
 private $private;
 protected $protected;
 static $instance;
 public  function __construct(){
 $this->public    = &#39;public     <br>&#39;;
 $this->private   = &#39;private    <br>&#39;;
 $this->protected = &#39;protected  <br>&#39;;
 }
 static function tank(){
 if (!isset(self::$instance[get_class()]))
 {
 $c = get_class();
 self::$instance = new $c;
 }
 return self::$instance;
 }    
 public function pub_function() {
 echo "you request public function<br>";
 echo $this->public;
 echo $this->private;        //private,内部可以调用
 echo $this->protected;      //protected,内部可以调用
 $this->pri_function();      //private方法,内部可以调用
 $this->pro_function();      //protected方法,内部可以调用
 }
 protected  function pro_function(){
 echo "you request protected function<br>";
 }
 private function pri_function(){
 echo "you request private function<br>";
 }
}
$test = test::tank();
echo $test->public;
echo $test->private;    //Fatal error: Cannot access private property test::$private
echo $test->protected;  //Fatal error: Cannot access protected property test::$protected
$test->pub_function();
$test->pro_function();  //Fatal error: Call to protected method test::pro_function() from context
$test->pri_function();  //Fatal error: Call to private method test::pri_function() from context
?>

Aus dem obigen Beispiel können wir Folgendes sehen:

public: kann intern in einer Klasse aufgerufen oder instanziiert werden.

private: Kann innerhalb der Klasse aufgerufen werden und beim Instanziieren des Aufrufs wird ein Fehler gemeldet.

geschützt: Es kann innerhalb der Klasse aufgerufen werden und beim Instanziieren des Aufrufs wird ein Fehler gemeldet.

<?php
class test{
 public $public;
 private $private;
 protected $protected;
 static $instance;
 public  function __construct(){
 $this->public    = &#39;public     <br>&#39;;
 $this->private   = &#39;private    <br>&#39;;
 $this->protected = &#39;protected  <br>&#39;;
 }
 protected function tank(){                          //私有方法不能继承,换成public,protected
 if (!isset(self::$instance[get_class()]))
 {
 $c = get_class();
 self::$instance = new $c;
 }
 return self::$instance;
 }    
 public function pub_function() {
 echo "you request public function<br>";
 echo $this->public;
 }
 protected  function pro_function(){
 echo "you request protected function<br>";
 echo $this->protected;
 }
 private function pri_function(){
 echo "you request private function<br>";
 echo $this->private;
 }
}
class test1 extends test{
 public function __construct(){
 parent::tank();
 parent::__construct();
 }
 public function tank(){
 echo $this->public;
 echo $this->private;       //Notice: Undefined property: test1::$private
 echo $this->protected;
 $this->pub_function();
 $this->pro_function();
 $this->pri_function();    //Fatal error: Call to private method test::pri_function() from context &#39;test1&#39;
 }
 public  function pro_extends_function(){
 echo "you request extends_protected function<br>";
 }
 public function pri_extends_function(){
 echo "you request extends_private function<br>";
 }
}
error_reporting(E_ALL);
$test = new test1();
$test -> tank();       //子类和父类有相同名字的属性和方法,实例化子类时,子类的中的属性和方法会盖掉父类的。
?>

Aus dem obigen Beispiel können wir sehen:

public: public in test kann vererbt werden.

private: privat im Test kann nicht vererbt werden.

geschützt: Im Test geschützt kann vererbt werden.

statisch: Statisch im Test kann vererbt werden.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen öffentlich und privat 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