Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah perbezaan antara awam dan swasta dalam php

Apakah perbezaan antara awam dan swasta dalam php

青灯夜游
青灯夜游asal
2021-11-02 18:55:384448semak imbas

Perbezaan: 1. Jika ahli kelas diisytiharkan sebagai awam, ia boleh diakses dari mana-mana sahaja dan jika ahli kelas diisytiharkan sebagai peribadi, ia hanya boleh diakses oleh kelas yang mentakrifkan ahli. 2. Awam ialah jenis awam dengan kuasa terbesar dan boleh dipanggil secara dalaman, contoh dipanggil, dsb. peribadi ialah jenis peribadi dan hanya boleh digunakan dalam kelas ini.

Apakah perbezaan antara awam dan swasta dalam php

Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3

awam, persendirian dan dilindungi dipanggil akses pengubahsuai . Sama seperti C, PHP juga mempunyai tiga pengubah akses seperti awam, peribadi dan dilindungi. Keterlihatan sifat, kaedah atau pemalar boleh ditakrifkan dengan mendahului pengisytiharan dengan kata kunci ini.

1 Jika ahli kelas diisytiharkan awam, ia boleh diakses dari mana-mana sahaja.

Awam mempunyai kuasa terbesar dan boleh dipanggil secara dalaman, dipanggil contoh, dsb.

2. Jika ahli kelas diisytiharkan dilindungi, ia hanya boleh diakses dalam kelas itu sendiri dan dalam kelas warisan dan induk.

protected ialah jenis yang dilindungi, digunakan untuk memanggil kelas ini dan kelas yang diwarisi.

3 Jika ahli kelas diisytiharkan peribadi, ia hanya boleh diakses oleh kelas yang mentakrifkan ahli.

peribadi ialah jenis persendirian dan hanya boleh digunakan dalam kelas ini.

Contoh:

<?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
?>

Daripada contoh di atas, kita boleh lihat:

awam: boleh dipanggil di dalam kelas, Boleh dijadikan instantiated dan dipanggil.

peribadi: Boleh dipanggil di dalam kelas dan ralat akan dilaporkan semasa membuat panggilan.

dilindungi: Ia boleh dipanggil di dalam kelas dan ralat akan dilaporkan semasa membuat panggilan.

<?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();       //子类和父类有相同名字的属性和方法,实例化子类时,子类的中的属性和方法会盖掉父类的。
?>

Daripada contoh di atas, kita boleh lihat:

awam: awam dalam ujian boleh diwarisi.

peribadi: peribadi dalam ujian tidak boleh diwarisi.

dilindungi: dilindungi dalam ujian boleh diwarisi.

statik: statik dalam ujian boleh diwarisi.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Apakah perbezaan antara awam dan swasta dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn