Sobes.tech
Junior

PHP'da ko'rinish modifikatorlari nima?

sobes.tech AI

AIdan javob

Ko‘rinish modifikatorlari (public, protected, private) bir sinfning xususiyatlari va metodlariga kirish darajasini belgilaydi.

  • public - har qanday joydan kirish mumkin (sinf ichida, meros olgan sinflarda, tashqarida).
  • protected - sinf ichida va undan meros olgan sinflarda kirish mumkin.
  • private - faqat u joyda, sinf ichida, u yerda e’lon qilingan.

Misol:

<?php

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

    public function publicMethod() {
        echo "Jamoat metodiga kirish: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    protected function protectedMethod() {
        echo "Himoyalangan metodga kirish: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }

    private function privateMethod() {
        echo "Xususiy metodga kirish: " . $this->publicProperty . ", " . $this->protectedProperty . ", " . $this->privateProperty . "\n";
    }
}

class MyChildClass extends MyClass {
    public function testAccess() {
        echo "Farzand sinfda kirish: " . $this->publicProperty . ", " . $this->protectedProperty . "\n"; // public va protected ga kirish
        // echo $this->privateProperty; // Xato, private kirish mumkin emas
        $this->publicMethod();
        $this->protectedMethod();
        // $this->privateMethod(); // Xato, private kirish mumkin emas
    }
}

$obj = new MyClass();
echo $obj->publicProperty . "\n"; // Mavjud
// echo $obj->protectedProperty; // Xato, protected tashqaridan kirish mumkin emas
// echo $obj->privateProperty; // Xato, private tashqaridan kirish mumkin emas
$obj->publicMethod();
// $obj->protectedMethod(); // Xato, protected tashqaridan kirish mumkin emas
// $obj->privateMethod(); // Xato, private tashqaridan kirish mumkin emas

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