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()чакырганда чакырылат. Түзөтүү үчүн маалыматтардын массивин кайтарат.
Мисалдар:
<?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() чакырылат
<?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() чакырылат