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 "Public method access: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    protected function protectedMethod() {
        echo "Protected method access: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    private function privateMethod() {
        echo "Private method access: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }
}

class MyChildClass extends MyClass {
    public function testAccess() {
        echo "Child class access: " . $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();