Sobes.tech
Junior

O que são modificadores de visibilidade em PHP?

sobes.tech IA

Resposta da IA

Os modificadores de visibilidade (public, protected, private) determinam o nível de acesso às propriedades e métodos de uma classe.

  • public - acessível de qualquer lugar (dentro da classe, em classes herdadas, de fora).
  • protected - acessível dentro da classe e nas classes que a herdam.
  • private - acessível apenas dentro da classe onde é declarado.

Exemplo:

<?php

class MyClass {
    public $publicProperty = 'public';
    protected $protectedProperty = 'protected';
    private $privateProperty = 'private';

    public function publicMethod() {
        echo "Acesso ao método público: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    protected function protectedMethod() {
        echo "Acesso ao método protegido: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    private function privateMethod() {
        echo "Acesso ao método privado: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }
}

class MyChildClass extends MyClass {
    public function testAccess() {
        echo "Acesso na classe filha: " . $this->publicProperty . ", " . $this->protectedProperty . "\n"; // Acesso a public e protected
        // echo $this->privateProperty; // Erro, private não acessível
        $this->publicMethod();
        $this->protectedMethod();
        // $this->privateMethod(); // Erro, private não acessível
    }
}

$obj = new MyClass();
echo $obj->publicProperty . "\n"; // Disponível
// echo $obj->protectedProperty; // Erro, protected não acessível de fora
// echo $obj->privateProperty; // Erro, private não acessível de fora
$obj->publicMethod();
// $obj->protectedMethod(); // Erro, protected não acessível de fora
// $obj->privateMethod(); // Erro, private não acessível de fora

$childObj = new MyChildClass();
$childObj->testAccess();