Junior
PHPдеги сыйкырдуу ыкмалар эмне?
sobes.tech AI
AIден жооп
Магикалык ыкмалар PHP — бул атайын ыкмалар, алар белгилүү шарттарда автоматтык түрдө чакырылат. Анын аттары эки асты сызыктан башталат (__).
Негизги магикалык ыкмалардын тизмеси:
__construct(): Жаңы объект түзүлгөндө чакырылат.__destruct(): Объект жоюлганда чакырылат.__call($name, $arguments): Объекттин жеткиликтүү эмес же жок методун чакыргандан кийин чакырылат.__callStatic($name, $arguments): Статикалык жеткиликтүү эмес же жок методду чакыргандан кийин чакырылат.__get($name): Жеткиликтүү эмес мүнөздөмөнүн маанисин алуу аракетинде чакырылат.__set($name, $value): Жеткиликтүү эмес мүнөздөмөгө маанини коюу аракетинде чакырылат.__isset($name):isset()жеempty()колдонулганда чакырылат.__unset($name):unset()колдонулганда чакырылат.__sleep(): сериалдаштырууга мурун чакырылат, сериалдаштыруу үчүн мүнөздөмөлөрдүн аттарынын массивин кайтарат.__wakeup(): десериалдаштыруудан кийин чакырылат.__toString(): Объектти жол катары иштетүүгө мүмкүндүк берет.__invoke($args): Скрипт объектти функция катары чакырганда чакырылат.__set_state(array $properties):var_export()функциясы аркылуу объектти экспорттоо учурунда чакырылат.__clone(): Объект клондоонун аяктоосунан кийин чакырылат.__serialize(): сериалдаштырууда чакырылат, сериалдаштыруу үчүн маалыматтардын массивин кайтарат.__unserialize(array $data): десериалдаштырууда чакырылат,__serialize()аркылуу алынган маалыматтарды алат.
__construct жана __destruct колдонуу мисалы:
<?php
class Example {
public function __construct() {
echo "Объект түзүлдү\n";
}
public function __destruct() {
echo "Объект жок кылынды\n";
}
}
$obj = new Example();
unset($obj); // Объектти принудительно жок кылуу
?>
__get жана __set колдонуу мисалы:
<?php
class DataStore {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // же исключение чыгаруу
}
}
$store = new DataStore();
$store->name = "Alice"; // __set чакырылат
echo $store->name; // __get чакырылат
?>