Junior
Mi a láthatósági módosítók a PHP-ben?
sobes.tech MI
Válasz az MI-től
Láthatósági módosítók (public, protected, private) határozzák meg egy osztály tulajdonságainak és metódusainak hozzáférési szintjét.
public- bárhonnan elérhető (az osztályon belül, öröklődő osztályokban, kívülről).protected- az osztályon belül és az öröklődő osztályokban elérhető.private- csak az adott osztályon belül elérhető, ahol deklarálva van.
Példa:
<?php
class MyClass {
public $publicProperty = 'public';
protected $protectedProperty = 'protected';
private $privateProperty = 'private';
public function publicMethod() {
echo "Hozzáférés a nyilvános metódushoz: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
}
protected function protectedMethod() {
echo "Hozzáférés a védett metódushoz: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
}
private function privateMethod() {
echo "Hozzáférés a privát metódushoz: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
}
}
class MyChildClass extends MyClass {
public function testAccess() {
echo "Hozzáférés a gyermek osztályban: " . $this->publicProperty . ", " . $this->protectedProperty . "\n"; // hozzáférés a public és protected-hez
// echo $this->privateProperty; // Hiba, a private nem elérhető
$this->publicMethod();
$this->protectedMethod();
// $this->privateMethod(); // Hiba, a private nem elérhető
}
}
$obj = new MyClass();
echo $obj->publicProperty . "\n"; // Elérhető
// echo $obj->protectedProperty; // Hiba, a protected nem elérhető kívülről
// echo $obj->privateProperty; // Hiba, a private nem elérhető kívülről
$obj->publicMethod();
// $obj->protectedMethod(); // Hiba, a protected nem elérhető kívülről
// $obj->privateMethod(); // Hiba, a private nem elérhető kívülről
$childObj = new MyChildClass();
$childObj->testAccess();