Junior
Кадом усулҳои ҷодуии синфҳоро медонед?
sobes.tech AI
Ҷавоб аз AI
Магикӣ методҳо дар PHP махсусан методҳое мебошанд, ки автоматӣ дар вақти муайян даъват мешаванд. Онҳо бо __ (дугонаи зерин) оғоз мешаванд.
Методҳои магикӣ асосӣ:
__construct(): Дар вақти эҷоди намунаи нав аз класа даъват мешавад. Барои оғоз додани объект истифода мешавад.__destruct(): Дар вақти нест кардани объект ё анҷоми скрипт даъват мешавад. Барои озод кардани манбаъҳо истифода мешавад.__call(string $name, array $arguments): Дар вақти кӯшиши даъвати методи дастрас ё ғайриҳузур даъват мешавад.__callStatic(string $name, array $arguments): Дар вақти кӯшиши даъвати методи статикӣ, ки дастрас нест ё ҳузур надорад.__get(string $name): Дар вақти кӯшиши дастрасӣ ба хусусияти дастрас ё ғайриҳузур даъват мешавад.__set(string $name, mixed $value): Дар вақти кӯшиши таъин кардани арзиш ба хусусияти дастрас ё ғайриҳузур даъват мешавад.__isset(string $name): Дар вақти даъватиisset()ёempty()ба хусусияти дастрас ё ғайриҳузур даъват мешавад.__unset(string $name): Дар вақти даъватиunset()ба хусусияти дастрас ё ғайриҳузур даъват мешавад.__serialize(): Пеш аз сериалкунии объект боserialize()даъват мешавад. Массиви хусусиятҳоро барои сериалкунии бармегардонад.__unserialize(array $data): Дар вақти десериалкунии объект боunserialize()даъват мешавад. Массиви маълумотҳоро барои барқарор кардани хусусиятҳо мегирад.__toString(): Имкон медиҳад, ки объект ҳамчун сатр баррасӣ шавад. Дар вақти кӯшиши баромад кардани объект ҳамчун сатр (масалан, боecho) даъват мешавад. М бояд баргардонад сатр.__invoke(...$arguments): Имкон медиҳад, ки объект ҳамчун функсия коркард шавад. Дар вақти кӯшиши даъвати объект ҳамчун функсия даъват мешавад.__set_state(array $properties): Дар вақти барқарор кардани объект боvar_export()даъват мешавад. Массиви хусусиятҳои объектро мегирад.__debugInfo(): Дар вақти даъватиvar_dump()ба объект даъват мешавад. М бояд массив бо маълумот барои хатоҷудоиро баргардонад.
Масалан истифодаи __construct ва __toString:
<?php
class MyClass {
private $name;
public function __construct(string $name) {
$this->name = $name;
}
public function __toString(): string {
return "Объект бо номи: " . $this->name;
}
}
$obj = new MyClass("Тест");
echo $obj; // Даъвати __toString()
Масалан истифодаи __get ва __set:
<?php
class MyClass {
private $data = [];
public function __set(string $name, mixed $value): void {
$this->data[$name] = $value;
}
public function __get(string $name): mixed {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // Ё баромадани истисно
}
}
$obj = new MyClass();
$obj->prop1 = "Арзиши 1"; // Даъвати __set()
echo $obj->prop1; // Даъвати __get()