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();