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(): Позволяет рассматривать объект как строку:__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()`