Sobes.tech
Junior

Čo sú modifikátory viditeľnosti v PHP?

sobes.tech AI

Odpoveď od AI

Modifikátory viditeľnosti (public, protected, private) určujú úroveň prístupu k vlastnostiam a metódam triedy.

  • public - dostupné odkiaľkoľvek (vo vnútri triedy, v dediacej triede, zvonku).
  • protected - dostupné vo vnútri triedy a v dediacej triede.
  • private - dostupné iba vo vnútri triedy, v ktorej sú deklarované.

Príklad:

<?php

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

    public function publicMethod() {
        echo "Prístup k verejnej metóde: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    protected function protectedMethod() {
        echo "Prístup k chránené metóde: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    private function privateMethod() {
        echo "Prístup k súkromnej metóde: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }
}

class MyChildClass extends MyClass {
    public function testAccess() {
        echo "Prístup v potomkovi: " . $this->publicProperty . ", " . $this->protectedProperty . "\n"; // prístup k public a protected
        // echo $this->privateProperty; // Chyba, private nie je dostupné
        $this->publicMethod();
        $this->protectedMethod();
        // $this->privateMethod(); // Chyba, private nie je dostupné
    }
}

$obj = new MyClass();
echo $obj->publicProperty . "\n"; // Dostupné
// echo $obj->protectedProperty; // Chyba, protected nie je dostupné zvonku
// echo $obj->privateProperty; // Chyba, private nie je dostupné zvonku
$obj->publicMethod();
// $obj->protectedMethod(); // Chyba, protected nie je dostupné zvonku
// $obj->privateMethod(); // Chyba, private nie je dostupné zvonku

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