Na Programação Orientada a Objetos (OOP) PHP, modificadores de acesso controlam a visibilidade das propriedades e métodos da classe. Os principais modificadores de acesso em PHP são públicos, protegidos e privados.
Este artigo orientará você na finalidade e no uso desses modificadores de acesso e explicará como aplicá-los de maneira eficaz em PHP OOP.
class User { public $name = "John"; public function greet() { return "Hello, " . $this->name; } } $user = new User(); echo $user->greet(); // Output: Hello, John
Neste exemplo, tanto a propriedade $name quanto o método greet() são públicos, permitindo que sejam acessados diretamente de fora da classe.
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
Neste exemplo, getAge() é um método protegido, que pode ser acessado na classe Employee, uma subclasse de Person.
class Person { protected $age = 30; protected function getAge() { return $this->age; } } $person = new Person(); echo $person->getAge(); // Error: Cannot access protected method Person::getAge()
Mensagem de erro: Erro fatal: Erro não detectado: Não é possível acessar o método protegido Person::getAge()
Neste caso, tentar acessar o método protegido getAge() diretamente de uma instância de Person resulta em um erro porque os métodos protegidos não são acessíveis de fora da classe.
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
Neste exemplo, o método getBalance() é privado, portanto só pode ser acessado dentro da classe BankAccount. O método showBalance() é público e pode ser usado para acessar indiretamente o getBalance() privado.
class BankAccount { private $balance = 1000; private function getBalance() { return $this->balance; } } $account = new BankAccount(); echo $account->getBalance(); // Error: Cannot access private method BankAccount::getBalance()
Mensagem de erro: Erro fatal: Erro não detectado: Não é possível acessar o método privado BankAccount::getBalance()
Neste caso, tentar acessar o método privado getBalance() diretamente de uma instância de BankAccount resulta em um erro porque os métodos privados não são acessíveis de fora da classe.
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();
Mensagem de erro: Erro fatal: Erro não detectado: Não é possível acessar o método privado BankAccount::getBalance()
Aqui, o método privado getBalance() é inacessível até mesmo para subclasses como SavingsAccount, demonstrando que métodos privados não podem ser acessados fora de sua classe de definição.
Modificador | Aula interna | Classe derivada | Fora da aula |
---|---|---|---|
Público | Sim | Sim | Sim |
Protegido | Sim | Sim | Não |
Privado | Sim | Não | Não |
Os modificadores de acesso do PHP (público, protegido, privado) fornecem um mecanismo para gerenciar a visibilidade e o encapsulamento em OOP. Ao compreender e aplicar esses modificadores corretamente, você pode criar um código mais seguro e de fácil manutenção.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3