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-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Terdapat 5 jenis pengubah suai akses dalam PHP:
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".
<?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 } ?>
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.
Mari kami memahami penggunaan dan kerja pengubah suai dilindungi secara terperinci dengan mengambil contoh mudah di bawah:
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(); ?>
Output:
Selepas mengulas pada talian 29 yang cuba memanggil kaedah yang dilindungi
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.
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(); ?>
Output:
Selepas mengulas baris 34
Selepas mengulas baris 35 dan 36
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.
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!