Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengenalan kepada Pengaturcaraan Berorientasikan Objek PHP: Cara Menggunakan Pengubahsuai Akses untuk Melindungi Sifat dan Kaedah Objek

Pengenalan kepada Pengaturcaraan Berorientasikan Objek PHP: Cara Menggunakan Pengubahsuai Akses untuk Melindungi Sifat dan Kaedah Objek

WBOY
WBOYasal
2023-07-30 14:12:32760semak imbas

Pengenalan kepada Pengaturcaraan Berorientasikan Objek PHP: Cara menggunakan pengubah suai akses untuk melindungi sifat dan kaedah objek

Dalam PHP, Pengaturcaraan Berorientasikan Objek (OOP) ialah kaedah pengaturcaraan yang sangat biasa dan berkuasa. Dengan cara ini, kita boleh mengabstrak entiti ke dalam objek dan mentakrifkan sifat dan kaedah mereka untuk menerangkan tingkah laku mereka. Walau bagaimanapun, kadangkala kita perlu mengehadkan akses kepada objek untuk melindungi keadaan dalamannya dan beberapa kaedah utama. Untuk tujuan ini, PHP menyediakan pengubah suai akses untuk membantu kami mencapai tujuan ini.

Terdapat tiga pengubah suai akses yang biasa digunakan dalam PHP: awam, peribadi dan dilindungi. Pengubah suai akses yang berbeza mentakrifkan keterlihatan dan kebolehcapaian sifat dan kaedah objek kepada dunia luar. Di bawah ini kami akan memperkenalkan penggunaan ketiga-tiga pengubah akses ini secara terperinci.

  1. Pengubah suai akses awam

Pengubah suai akses awam ialah pengubah suai yang paling biasa, yang bermaksud bahawa sifat dan kaedah objek boleh diakses dan dipanggil dari mana-mana sahaja. Apabila kami tidak mentakrifkan sebarang pengubah suai akses, lalai ialah pengubah suai akses awam.

Secara amnya, kami mentakrifkan sifat kelas sebagai peribadi atau dilindungi, dan mentakrifkan kaedah sebagai awam, supaya kod luaran boleh mengakses dan mengendalikan sifat objek melalui kaedah tersebut. Berikut ialah contoh menggunakan pengubah suai akses awam:

class Person {
  public $name;
  
  public function sayHello() {
    echo "Hello, my name is ".$this->name;
  }
}

$person = new Person();
$person->name = "John";
$person->sayHello();  // 输出 "Hello, my name is John"

Dalam kod di atas, kami mentakrifkan kelas Orang dengan atribut $name dan sayHello( ) Kaedah semuanya terbuka. Dengan menetapkan $name sebagai harta awam, kod luaran boleh terus mengubah suai dan mengakses nilai harta tersebut. Kaedah sayHello() boleh mencetak ucapan dalam kod luaran dengan menghidupkan objek dan memanggil kaedah tersebut. Person类,其中$name属性和sayHello()方法都是公有的。通过将$name设置为公有属性,外部代码可以直接修改和访问该属性的值。而sayHello()方法可以在外部代码中通过实例化对象并调用该方法来打印输出一条问候语。

  1. 私有(private)访问修饰符

私有访问修饰符表示对象的属性和方法只能在所属的类内部访问和调用,外部代码无法直接访问。为了访问私有属性和方法,我们需要使用类内部定义的公有方法。下面是一个使用私有访问修饰符的示例:

class Person {
  private $name;
  
  public function setName($name) {
    $this->name = $name;
  }
  
  public function sayHello() {
    echo "Hello, my name is ".$this->name;
  }
}

$person = new Person();
$person->setName("John");
$person->sayHello();  // 输出 "Hello, my name is John"

在上面的代码中,$name属性被定义为私有的,外部代码无法直接访问。为了对该属性赋值,我们定义了一个公有的setName($name)方法,并在其中通过方法内部访问私有属性来设置其值。同样,sayHello()方法可以在外部代码中通过实例化对象并调用该方法来打印输出问候语。

  1. 受保护(protected)访问修饰符

受保护访问修饰符表示对象的属性和方法只能在所属的类及其子类中访问和调用,外部代码无法直接访问。和私有访问修饰符类似,为了访问受保护的属性和方法,我们也需要使用类内部定义的公有方法。下面是一个使用受保护访问修饰符的示例:

class Person {
  protected $name;
  
  public function setName($name) {
    $this->name = $name;
  }
  
  public function sayHello() {
    echo "Hello, my name is ".$this->name;
  }
}

class Student extends Person {
  public function study() {
    echo $this->name." is studying.";
  }
}

$student = new Student();
$student->setName("John");
$student->sayHello();  // 输出 "Hello, my name is John"
$student->study();  // 输出 "John is studying."

上面的代码中,Person类的$name属性被定义为受保护的,而Student类继承了Person类。在Student类内部,我们可以直接访问和调用继承自Person类的受保护属性和方法。在外部代码中,我们通过实例化Student

    Pengubah suai akses persendirian

    🎜Pengubah suai akses persendirian bermaksud sifat dan kaedah objek hanya boleh diakses dan dipanggil dalam kelas di mana ia berada, dan tidak boleh diakses secara langsung oleh kod luaran . Untuk mengakses sifat dan kaedah persendirian, kita perlu menggunakan kaedah awam yang ditakrifkan di dalam kelas. Berikut ialah contoh menggunakan pengubah suai akses peribadi: 🎜rrreee🎜 Dalam kod di atas, sifat $name ditakrifkan sebagai peribadi dan tidak boleh diakses terus oleh kod luaran. Untuk memberikan nilai kepada harta ini, kami mentakrifkan kaedah setName($name) awam dan menetapkan nilainya dengan mengakses harta peribadi di dalam kaedah tersebut. Begitu juga, kaedah sayHello() boleh digunakan dalam kod luaran untuk mencetak ucapan dengan membuat seketika objek dan memanggil kaedah tersebut. 🎜
      🎜Pengubah suai akses terlindung🎜🎜🎜Pengubah suai akses terlindung bermaksud bahawa sifat dan kaedah objek hanya boleh diakses dan dipanggil dalam kelas di mana ia berada dan subkelasnya, dan tidak boleh diakses melalui akses langsung kod luaran. Sama seperti pengubah akses peribadi, untuk mengakses sifat dan kaedah yang dilindungi, kami juga perlu menggunakan kaedah awam yang ditakrifkan dalam kelas. Berikut ialah contoh menggunakan pengubah akses yang dilindungi: 🎜rrreee🎜Dalam kod di atas, atribut $name bagi kelas Orang ditakrifkan sebagai dilindungi, manakala Pelajar mewarisi kelas Orang. Di dalam kelas Pelajar, kami boleh terus mengakses dan memanggil sifat dan kaedah yang dilindungi yang diwarisi daripada kelas Orang. Daripada kod luaran, kami mengakses dan memanggil sifat dan kaedah yang dilindungi dengan menjadikan objek Pelajar dan memanggil kaedah awam yang ditentukan. 🎜🎜Dengan menggunakan pengubah suai akses, kami boleh mengawal hak akses objek dengan lebih baik dan mengelakkan beberapa akses dan operasi yang tidak munasabah. Dalam pembangunan sebenar, kita harus memilih dan menggunakan pengubah akses secara munasabah berdasarkan keperluan dan prinsip reka bentuk. Saya harap artikel ini akan membantu anda memahami dan menggunakan pengubah suai akses dalam PHP! 🎜

Atas ialah kandungan terperinci Pengenalan kepada Pengaturcaraan Berorientasikan Objek PHP: Cara Menggunakan Pengubahsuai Akses untuk Melindungi Sifat dan Kaedah Objek. 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