Junior
Kādus burvju metodes klases jūs zināt?
sobes.tech AI
Atbilde no AI
Magiskās metodes PHP ir īpaši metodes, kas automātiski tiek izsauktas noteiktos notikumos. Tās sākas ar __ (dubultu apakšsvītru).
Galvenās magiskās metodes:
__construct(): Tiek izsaukta, izveidojot jaunu klases piemēru. To izmanto objekta inicializācijai.__destruct(): Tiek izsaukta, dzēšot objektu vai beidzot skriptu. To izmanto resursu atbrīvošanai.__call(string $name, array $arguments): Tiek izsaukta, mēģinot izsaukt nepieejamu vai neesošu metodi.__callStatic(string $name, array $arguments): Tiek izsaukta, mēģinot izsaukt nepieejamu vai neesošu statisku metodi.__get(string $name): Tiek izsaukta, mēģinot piekļūt nepieejamai vai neesošai īpašībai.__set(string $name, mixed $value): Tiek izsaukta, mēģinot iestatīt vērtību nepieejamai vai neesošai īpašībai.__isset(string $name): Tiek izsaukta, kad tiek izsauktsisset()vaiempty()uz nepieejamu vai neesošu īpašību.__unset(string $name): Tiek izsaukta, kad tiek izsauktsunset()uz nepieejamu vai neesošu īpašību.__serialize(): Tiek izsaukta pirms objekta serializācijas arserialize(). Atgriež īpašību masīvu serializācijai.__unserialize(array $data): Tiek izsaukta pēc objekta deserializācijas arunserialize(). Saņem datu masīvu īpašību atjaunošanai.__toString(): Ļauj uzskatīt objektu par virkni. Tiek izsaukta, mēģinot izvadīt objektu kā virkni (piemēram, arecho). Jāatgriež virkne.__invoke(...$arguments): Ļauj apstrādāt objektu kā funkciju. Tiek izsaukta, mēģinot izsaukt objektu kā funkciju.__set_state(array $properties): Tiek izsaukta, atjaunojot objektu arvar_export(). Saņem īpašību masīvu.__debugInfo(): Tiek izsaukta, kad tiek izsauktsvar_dump()uz objektu. Jāatgriež informācijas masīvs debugšanai.
Piemērs, izmantojot __construct un __toString:
<?php
class MyClass {
private $name;
public function __construct(string $name) {
$this->name = $name;
}
public function __toString(): string {
return "Objekts ar nosaukumu: " . $this->name;
}
}
$obj = new MyClass("Tests");
echo $obj; // Izsauks `__toString()`
Piemērs, izmantojot __get un __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; // Vai izmetiet izņēmumu
}
}
$obj = new MyClass();
$obj->prop1 = "Vērtība 1"; // Izsauks `__set()`
echo $obj->prop1; // Izsauks `__get()`