Dalam Pengaturcaraan Berorientasikan Objek PHP (OOP), pengubah suai akses mengawal keterlihatan sifat dan kaedah kelas. Pengubah suai akses utama dalam PHP adalah awam, dilindungi dan peribadi.
Artikel ini akan membimbing anda melalui tujuan dan penggunaan pengubah suai akses ini dan menerangkan cara menggunakannya dengan berkesan dalam PHP OOP.
class User { public $name = "John"; public function greet() { return "Hello, " . $this->name; } } $user = new User(); echo $user->greet(); // Output: Hello, John
Dalam contoh ini, kedua-dua sifat $name dan kaedah greet() adalah awam, membolehkan mereka diakses terus dari luar kelas.
class Person { protected $age = 30; protected function getAge() { return $this->age; } } class Employee extends Person { public function showAge() { return $this->getAge(); // Correct: Accesses protected method within a subclass } } $employee = new Employee(); echo $employee->showAge(); // Output: 30
Dalam contoh ini, getAge() ialah kaedah yang dilindungi, yang boleh diakses dalam kelas Pekerja, subkelas Orang.
class Person { protected $age = 30; protected function getAge() { return $this->age; } } $person = new Person(); echo $person->getAge(); // Error: Cannot access protected method Person::getAge()
Mesej Ralat: Ralat maut: Ralat Tidak Ditangkap: Tidak dapat mengakses kaedah yang dilindungi Person::getAge()
Dalam kes ini, cuba mengakses kaedah yang dilindungi getAge() secara langsung daripada kejadian Orang mengakibatkan ralat kerana kaedah yang dilindungi tidak boleh diakses dari luar kelas.
class BankAccount { private $balance = 1000; private function getBalance() { return $this->balance; } public function showBalance() { return $this->getBalance(); // Correct: Accesses private method within the same class } } $account = new BankAccount(); echo $account->showBalance(); // Output: 1000
Dalam contoh ini, kaedah getBalance() adalah peribadi, jadi ia hanya boleh diakses dalam kelas BankAccount. Kaedah showBalance() adalah awam dan boleh digunakan untuk mengakses getBalance() peribadi secara tidak langsung.
class BankAccount { private $balance = 1000; private function getBalance() { return $this->balance; } } $account = new BankAccount(); echo $account->getBalance(); // Error: Cannot access private method BankAccount::getBalance()
Mesej Ralat: Ralat maut: Ralat Tidak Ditangkap: Tidak dapat mengakses kaedah peribadi BankAccount::getBalance()
Dalam kes ini, cuba mengakses kaedah persendirian getBalance() terus daripada contoh BankAccount mengakibatkan ralat kerana kaedah persendirian tidak boleh diakses dari luar kelas.
class BankAccount { private $balance = 1000; private function getBalance() { return $this->balance; } } class SavingsAccount extends BankAccount { public function showBalance() { return $this->getBalance(); // Error: Cannot access private method BankAccount::getBalance() } } $savings = new SavingsAccount(); echo $savings->showBalance();
Mesej Ralat: Ralat maut: Ralat Tidak Ditangkap: Tidak dapat mengakses kaedah peribadi BankAccount::getBalance()
Di sini, kaedah persendirian getBalance() tidak boleh diakses walaupun kepada subkelas seperti SavingsAccount, menunjukkan bahawa kaedah persendirian tidak boleh diakses di luar kelas penentunya.
Modifier | Inside Class | Derived Class | Outside Class |
---|---|---|---|
Public | Yes | Yes | Yes |
Protected | Yes | Yes | No |
Private | Yes | No | No |
Atas ialah kandungan terperinci Memahami Pengubahsuai Akses dalam PHP OOP: Awam, Dilindungi dan Peribadi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!