Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan mendalam tentang enkapsulasi berorientasikan objek PHP

Penjelasan mendalam tentang enkapsulasi berorientasikan objek PHP

王林
王林asal
2023-08-11 11:00:401315semak imbas

Penjelasan mendalam tentang enkapsulasi berorientasikan objek PHP

Tafsiran mendalam tentang pengkapsulan berorientasikan objek PHP

Encapsulasi ialah salah satu daripada tiga ciri utama pengaturcaraan berorientasikan objek Ia merujuk kepada merangkum data dan operasi pada data dalam kelas, menyembunyikan butiran pelaksanaan khusus daripada program luaran , menyediakan antara muka luaran. Dalam PHP, konsep enkapsulasi dilaksanakan dengan menggunakan pengubah akses (awam, dilindungi, persendirian) untuk mengawal kebolehcapaian sifat dan kaedah.

Pertama, mari kita fahami peranan pengubah akses:

  1. awam (awam): Hartanah dan kaedah awam boleh diakses di dalam dan di luar kelas.
  2. dilindungi (dilindungi): Sifat dan kaedah yang dilindungi hanya boleh diakses dalam kelas dan subkelas, dan tidak boleh diakses secara langsung oleh program luaran.
  3. peribadi (peribadi): Sifat dan kaedah peribadi hanya boleh diakses dalam kelas, dan subkelas mahupun program luaran tidak boleh mengaksesnya secara langsung.

Berikut ialah contoh untuk menunjukkan penggunaan enkapsulasi:

class Person {
    private $name;
    protected $age;
    public $gender;

    public function __construct($name, $age, $gender) {
        $this->name = $name;
        $this->age = $age;
        $this->gender = $gender;
    }

    public function getName() {
        return $this->name;
    }

    protected function getAge() {
        return $this->age;
    }

    private function getGender() {
        return $this->gender;
    }

    public function displayInfo() {
        echo "Name: " . $this->getName() . "<br>";
        echo "Age: " . $this->getAge() . "<br>";
        echo "Gender: " . $this->getGender() . "<br>";
    }
}

// 创建一个Person对象并输出信息
$person = new Person("John", 25, "Male");
$person->displayInfo();

Dalam contoh ini, kelas Orang mempunyai tiga atribut: $nama (peribadi), $umur (dilindungi), $jantina (awam). Sifat ini dimulakan melalui pembina. Untuk atribut peribadi $name, kami menggunakan kaedah awam getName() untuk mendapatkan nilainya untuk atribut yang dilindungi $age, kami menggunakan kaedah yang dilindungi getAge() untuk mendapatkan nilainya untuk atribut awam $gender , program luaran boleh; mengaksesnya secara langsung. Dalam kaedah displayInfo(), kami memanggil tiga kaedah ini untuk memaparkan maklumat tentang objek Person.

Adalah dapat dilihat bahawa faedah enkapsulasi ialah kita boleh menyembunyikan butiran pelaksanaan objek dan hanya menyediakan antara muka operasi luaran yang terhad, dengan itu melindungi keadaan dalaman objek dan meningkatkan keselamatan dan kebolehselenggaraan kod.

Selain pengubah akses, PHP juga menyediakan beberapa kaedah khas untuk mencapai enkapsulasi yang lebih fleksibel:

  1. __get(): Apabila program luaran mengakses harta peribadi, kaedah __get() akan dipanggil secara automatik.
  2. __set(): Apabila program luaran memberikan nilai kepada harta peribadi, kaedah __set() akan dipanggil secara automatik.
  3. __isset(): Apabila program luaran menggunakan fungsi isset() untuk mengesan sama ada harta peribadi telah ditetapkan, kaedah __isset() akan dipanggil secara automatik.
  4. __unset(): Apabila program luaran menggunakan fungsi unset() untuk menetapkan harta peribadi kepada null, kaedah __unset() dipanggil secara automatik.

Berikut ialah contoh untuk menunjukkan penggunaan kaedah khas ini:

class Book {
    private $title;

    public function __get($property) {
        if ($property === 'title') {
            return $this->title;
        }
    }

    public function __set($property, $value) {
        if ($property === 'title') {
            $this->title = $value;
        }
    }

    public function __isset($property) {
        if ($property === 'title') {
            return isset($this->title);
        }
    }

    public function __unset($property) {
        if ($property === 'title') {
            $this->title = null;
        }
    }
}

$book = new Book();
$book->title = "PHP Programming";
echo $book->title . "<br>";
echo isset($book->title) ? "Yes" : "No" . "<br>";
unset($book->title);
echo isset($book->title) ? "Yes" : "No" . "<br>";

Dalam contoh ini, atribut $title dalam kelas Book adalah peribadi dan boleh diperoleh dan ditetapkan melalui kaedah __get() dan __set() . Nilai atribut. Kaedah __isset() digunakan untuk mengesan sama ada atribut telah ditetapkan, dan kaedah __unset() digunakan untuk menetapkan atribut kepada null. Seperti yang anda lihat daripada demonstrasi, kami boleh terus mendapatkan dan menetapkan nilai harta persendirian melalui nama harta objek sama seperti mengakses harta awam.

Untuk meringkaskan, enkapsulasi ialah salah satu ciri yang amat diperlukan dalam pengaturcaraan berorientasikan objek Ia boleh melindungi keadaan dalaman objek dan meningkatkan keselamatan dan kebolehselenggaraan kod. Dengan menggunakan pengubah suai akses dan kaedah khas, kami boleh mengawal kebolehcapaian sifat dan kaedah secara fleksibel, menyembunyikan butiran pelaksanaan dan hanya menyediakan antara muka terhad kepada dunia luar. Menguasai konsep dan penggunaan enkapsulasi adalah sangat penting untuk menulis kod berorientasikan objek berkualiti tinggi.

Atas ialah kandungan terperinci Penjelasan mendalam tentang enkapsulasi berorientasikan objek 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