Sobes.tech
Junior

Šta su modifikatori vidljivosti u PHP?

sobes.tech АИ

Одговор од АИ

Modifikatori vidljivosti (public, protected, private) određuju nivo pristupa svojstvima i metodama klase.

  • public - dostupno od bilo gde (unutar klase, u naslednim klasama, spolja).
  • protected - dostupno unutar klase i u naslednim klasama.
  • private - dostupno samo unutar klase u kojoj je deklarisano.

Primer:

<?php

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

    public function publicMethod() {
        echo "Pristup javnom metodu: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    protected function protectedMethod() {
        echo "Pristup zaštićenom metodu: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    private function privateMethod() {
        echo "Pristup privatnom metodu: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }
}

class MyChildClass extends MyClass {
    public function testAccess() {
        echo "Pristup u naslednoj klasi: " . $this->publicProperty . ", " . $this->protectedProperty . "\n"; // pristup public i protected
        // echo $this->privateProperty; // Greška, private nije dostupno
        $this->publicMethod();
        $this->protectedMethod();
        // $this->privateMethod(); // Greška, private nije dostupno
    }
}

$obj = new MyClass();
echo $obj->publicProperty . "\n"; // Dostupno
// echo $obj->protectedProperty; // Greška, protected nije dostupno spolja
// echo $obj->privateProperty; // Greška, private nije dostupno spolja
$obj->publicMethod();
// $obj->protectedMethod(); // Greška, protected nije dostupno spolja
// $obj->privateMethod(); // Greška, private nije dostupno spolja

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