В объектно-ориентированном программировании PHP (ООП) модификаторы доступа управляют видимостью свойств и методов класса. Основными модификаторами доступа в PHP являются общедоступный, защищенный и частный.
Эта статья расскажет вам о назначении и использовании этих модификаторов доступа и объяснит, как эффективно их применять в ООП PHP.
class User { public $name = "John"; public function greet() { return "Hello, " . $this->name; } } $user = new User(); echo $user->greet(); // Output: Hello, John
В этом примере и свойство $name, и метод Greeting() являются общедоступными, что позволяет обращаться к ним напрямую извне класса.
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
В этом примере getAge() — это защищенный метод, доступный в классе «Сотрудник», подклассе «Человек».
class Person { protected $age = 30; protected function getAge() { return $this->age; } } $person = new Person(); echo $person->getAge(); // Error: Cannot access protected method Person::getAge()
Сообщение об ошибке: Неустранимая ошибка: неперехваченная ошибка: невозможно получить доступ к защищенному методу Person::getAge()
В этом случае попытка доступа к защищенному методу getAge() непосредственно из экземпляра Person приводит к ошибке, поскольку защищенные методы недоступны извне класса.
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
В этом примере метод getBalance() является закрытым, поэтому доступ к нему возможен только внутри класса BankAccount. Метод showBalance() является общедоступным и может использоваться для косвенного доступа к частному методу getBalance().
class BankAccount { private $balance = 1000; private function getBalance() { return $this->balance; } } $account = new BankAccount(); echo $account->getBalance(); // Error: Cannot access private method BankAccount::getBalance()
Сообщение об ошибке: Неустранимая ошибка: необнаруженная ошибка: невозможно получить доступ к частному методу BankAccount::getBalance()
В этом случае попытка доступа к закрытому методу getBalance() непосредственно из экземпляра BankAccount приводит к ошибке, поскольку частные методы недоступны извне класса.
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();
Сообщение об ошибке: Неустранимая ошибка: необнаруженная ошибка: невозможно получить доступ к частному методу BankAccount::getBalance()
Здесь частный метод getBalance() недоступен даже для таких подклассов, как SavingsAccount, что демонстрирует, что к частным методам нельзя получить доступ за пределами их определяющего класса.
Модификатор | Внутри класса | Производный класс | Вне класса |
---|---|---|---|
Публикация | Да | Да | Да |
Защищено | Да | Да | Нет |
Частный | Да | Нет | Нет |
Модификаторы доступа PHP (открытый, защищенный, частный) предоставляют механизм управления видимостью и инкапсуляцией в ООП. Поняв и правильно применив эти модификаторы, вы сможете создать более безопасный и удобный в сопровождении код.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3