Sobes.tech
Junior

Какви са модификаторите за видимост в PHP?

sobes.tech AI

Отговор от AI

Модификаторите за видимост (public, protected, private) определят нивото на достъп до свойствата и методите на класа.

  • public - достъпен от всякъде (вътре в класа, в наследени класове, отвън).
  • protected - достъпен вътре в класа и в наследените класове.
  • private - достъпен само вътре в класа, в който е обявен.

Пример:

<?php

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

    public function publicMethod() {
        echo "Достъп до публичен метод: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    protected function protectedMethod() {
        echo "Достъп до защитен метод: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    private function privateMethod() {
        echo "Достъп до личен метод: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }
}

class MyChildClass extends MyClass {
    public function testAccess() {
        echo "Достъп в наследения клас: " . $this->publicProperty . ", " . $this->protectedProperty . "\n"; // достъп до public и protected
        // echo $this->privateProperty; // Грешка, private не е достъпно
        $this->publicMethod();
        $this->protectedMethod();
        // $this->privateMethod(); // Грешка, private не е достъпно
    }
}

$obj = new MyClass();
echo $obj->publicProperty . "\n"; // Достъпно
// echo $obj->protectedProperty; // Грешка, protected не е достъпно отвън
// echo $obj->privateProperty; // Грешка, private не е достъпно отвън
$obj->publicMethod();
// $obj->protectedMethod(); // Грешка, protected не е достъпно отвън
// $obj->privateMethod(); // Грешка, private не е достъпно отвън

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