Dilindungi dalam PHP

PHPz
Lepaskan: 2024-08-29 13:08:26
asal
1019 orang telah melayarinya

Kata kunci pada asasnya ialah satu set perkataan khas yang dikhaskan dalam setiap bahasa pengaturcaraan untuk tujuan tertentu. Ia boleh menjadi sama ada arahan atau parameter dan ia tidak boleh digunakan untuk kegunaan biasa seperti nama pembolehubah. Dilindungi dalam PHP dipratentukan dalam semua bahasa termasuk PHP dan juga dipanggil nama simpanan.

IKLAN Kursus Popular dalam kategori ini PEMBANGUN PHP - Pengkhususan | 8 Siri Kursus | 3 Ujian Olok-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Terdapat 5 jenis pengubah suai akses dalam PHP:

  • Awam
  • Persendirian
  • Dilindungi
  • Abstrak
  • Akhir

Kami akan menumpukan pada hanya pengubah akses yang dilindungi dalam artikel ini. Selain daripada pembolehubah, kata kunci yang dilindungi juga digunakan untuk mengisytiharkan kaedah/fungsi dan sifat sebagai dilindungi. Melainkan dinyatakan secara eksplisit, semua pembolehubah dan kaedah akan terbuka secara lalai. Pembolehubah yang dilindungi mengurangkan keterlihatan pembolehubah atau kaedah masing-masing kerana aksesnya terhad kepada kelas di mana ia diisytiharkan. Pengubah suai akses yang dilindungi tidak boleh digunakan untuk kelas.

Walau bagaimanapun, mereka boleh dipanggil oleh subkelas yang diwarisi daripada kelas induknya. Oleh itu, seseorang boleh mengisytiharkan kaedah atau pembolehubah yang diperlukan sebagai dilindungi dengan memberi awalan dengan kata kunci "dilindungi".

Sintaks

<?php
//declaration of protected variable
protected $<variable_name> = value;
//declaration of protected property
protected $proc = 'protected property';
//declaration of protected function
protected function function_name(){
//PHP code goes here
}
?>
Salin selepas log masuk

Di sini kita dapat melihat bahawa menggunakan kata kunci yang dilindungi kita mengisytiharkan kedua-dua pembolehubah dan nama fungsi.

Kerja pengubah yang dilindungi dalam PHP: Seperti pengubah akses peribadi, kami juga boleh menggunakan protected untuk menyekat penggunaan dan mengakses fungsi kelas dan pembolehubah di luar kelas. Tetapi satu pengecualian untuk dilindungi daripada pembolehubah persendirian ialah pembolehubah tersebut boleh diakses melalui warisan daripada kelas induknya dalam subkelas.

Contoh Pembolehubah dan Kaedah Dilindungi

Mari kami memahami penggunaan dan kerja pengubah suai dilindungi secara terperinci dengan mengambil contoh mudah di bawah:

Contoh #1

Kod:

<?php
// Declaration of Main class
class Math {
protected $a = 30;
protected $b = 10;
// Declaration of division function
function division()
{
echo $div=$this->a/$this->b;
echo "\n";
}
protected function multiply()
{
echo $mul=$this->a*$this->b;
echo "\n";
}
}
// Declaration of child class addn inherited from above class
class addn extends Math {
// Declaration of addition function
function addition()
{
echo $division=$this->a+$this->b;
}
}
$obj= new addn;
$obj->division();
$obj->addition();
$obj->multiply();
?>
Salin selepas log masuk

Output:

Dilindungi dalam PHP

Selepas mengulas pada talian 29 yang cuba memanggil kaedah yang dilindungi

Dilindungi dalam PHP

Dalam contoh di atas, kami mempamerkan operasi matematik yang berbeza seperti penambahan, pembahagian dan pendaraban. Pertama, kami mengisytiharkan fungsi division() tanpa sebarang pengubah akses. Oleh itu secara lalai, ia adalah awam dan nilai bahagian yang kita lakukan pada kedua-dua pembolehubah a dan b dipaparkan dalam output apabila kita memanggil fungsi dengan mencipta objeknya. Tetapi apabila kita cuba memanggil fungsi yang dilindungi multiply() kita mendapat ralat sebaris 34 yang mengatakan bahawa kaedah yang dilindungi tidak boleh dipanggil.

Sedangkan kita boleh memanggil dan mendapatkan nilai kaedah yang dilindungi melalui pewarisan seperti yang ditunjukkan. Di sini kelas anak dan diwarisi daripada Matematik kelas induk dan oleh itu kami dapat memanggil pembolehubah yang dilindungi a dan b tanpa sebarang ralat.

Contoh #2

Kod:

<?php
class Animal {
// Declaration of protected variable $animal
protected $animal = array("Dog", "Cat", "Cow");
// Declaration of protected function for Animal description
protected function getDescription($animal) {
if($animal == "Dog") {
echo "Dogs are the most loyal animals";
}
else if($animal == "Cat") {
echo "Cats are very smart";
}
else if($animal == "Cow") {
echo "Cows are worshipped in India";
}
}
}
// Declaration of sub class of above Animal class
class Dog extends Animal {
protected $animal = "Dog";
// Declaration of public function to print dog's description
public function getDogDescription() {
// Here we call the protected getDescription() method of parent class Animal
$this->getDescription($this->animal);
}
}
// Creating an object of class Animal
$animal = new Animal();
// Creating an object of subclass Dog
$dog = new Dog();
/*
Trying to access protected variables and methods
*/
echo $animal->animal; // Cannot be accessed
$animal->getDescription("Dog"); // Cannot be accessed
echo $dog->animal; // Cannot be accessed
/*
We can call getDogDescription method,
in which we are calling a protected method
of Animal class
*/
$dog->getDogDescription();
?>
Salin selepas log masuk

Output:

Dilindungi dalam PHP

Selepas mengulas baris 34

Dilindungi dalam PHP

Selepas mengulas baris 35 dan 36

Dilindungi dalam PHP

Dalam contoh ini, kami mula-mula mengisytiharkan kelas induk utama Haiwan dan memulakan pembolehubah dilindungi sebagai $animal yang merupakan tatasusunan yang mengandungi nama 3 haiwan berbeza. Seterusnya, kami juga mengisytiharkan fungsi yang dilindungi di mana kami memberikan penerangan unik kepada setiap haiwan dalam tatasusunan.

Memandangkan pembolehubah yang dilindungi boleh diakses menggunakan subkelas, kami di sini mencipta satu lagi subkelas Anjing daripada kelas induk Haiwan. Juga untuk mempamerkan bahawa fungsi awam boleh diakses di mana-mana sahaja, kami mengisytiharkan fungsi awam untuk mengeluarkan penerangan anjing berubah-ubah.

Seterusnya, kami mencipta objek bagi kedua-dua kelas Haiwan dan Anjing dan cuba mengakses pembolehubahnya yang dilindungi. Oleh itu untuk baris 40, 41 dan 42, kami mendapat ralat maut yang memberitahu bahawa sifat/kaedah/pembolehubah yang dilindungi tidak boleh diakses. Oleh itu, kami tidak boleh mengakses sebarang pembolehubah di luar kelas Haiwan kerana semuanya dilindungi.

Kepentingan Dilindungi dalam PHP

  • Pengubah suai yang dilindungi pada asasnya mengurangkan keterlihatan pembolehubah/kaedah dan oleh itu lebih selamat daripada pengubah suai akses awam yang boleh diakses di mana-mana sahaja.
  • Hanya subkelas boleh mengakses kaedah yang dilindungi dan bukan oleh mana-mana kelas.
  • Utiliti kelas dibuat dengan sangat jelas apabila kami menjadikannya sebagai dilindungi. Ini sangat membantu apabila terdapat banyak data dan kami perlu meletakkan tanda yang pasti pada yang ini.
  • Pembolehubah dan ahli yang dilindungi adalah awam kepada kelas di mana ia diisytiharkan dan juga kelas anak yang mewarisi sifat ini daripada kelas induk.
  • Ia menyediakan keselamatan tahap kedua, satu kurang daripada peribadi yang paling selamat dan bersebelahan dengan pengubah suai awam yang tidak begitu selamat.
  • Ia membantu pembangun menerangkan ahli yang boleh dikongsi dan yang tidak boleh dikongsi serta membantu mengehadkan mereka dalam dinding kelas.

Kesimpulan

Oleh itu pembolehubah yang dilindungi ialah pengubah suai akses yang digunakan untuk mengawal pembolehubah atau kaedah atau sifat yang ditakrifkan secara khusus dalam kelas. Ia perlu dinyatakan secara eksplisit dengan awalan dan oleh itu boleh diakses hanya dalam pakej yang diisytiharkan dan oleh subkelas yang mewarisi daripada pakej induk.

Atas ialah kandungan terperinci Dilindungi dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!