Sobes.tech
Junior

Kas ir burvju metodes PHP?

sobes.tech AI

Atbilde no AI

Burvju metodes PHP ir īpaši metodes, kuras tiek automātiski izsauktas noteiktos apstākļos. Tām sākas ar diviem apakšsvītrām (__).

Galveno burvju metožu saraksts:

  • __construct(): Izsauc, izveidojot jaunu objektu.
  • __destruct(): Izsauc, iznīcinot objektu.
  • __call($name, $arguments): Izsauc, mēģinot izsaukt nepieejamu vai neesošu objekta metodi.
  • __callStatic($name, $arguments): Izsauc, mēģinot izsaukt nepieejamu vai neesošu statisku metodi.
  • __get($name): Izsauc, mēģinot iegūt nepieejamu objekta īpašību.
  • __set($name, $value): Izsauc, mēģinot iestatīt nepieejamu īpašību.
  • __isset($name): Izsauc, izmantojot isset() vai empty() nepieejamai īpašībai.
  • __unset($name): Izsauc, izmantojot unset() nepieejamai īpašībai.
  • __sleep(): Izsauc pirms serializācijas, atgriež īpašību nosaukumu masīvu serializācijai.
  • __wakeup(): Izsauc pēc deserializācijas.
  • __toString(): Atļauj objektam uzvesties kā virknei, izmantojot kā virknes kontekstā.
  • __invoke($args): Izsauc, kad skripts mēģina izsaukt objektu kā funkciju.
  • __set_state(array $properties): Izsauc, eksportējot objektu ar var_export().
  • __clone(): Izsauc pēc objekta klonēšanas pabeigšanas, lai konfigurētu klonu.
  • __serialize(): Izsauc, serializējot, atgriežot datu masīvu serializācijai.
  • __unserialize(array $data): Izsauc, pēc deserializācijas, saņemot datus no __serialize().

Piemērs, izmantojot __construct un __destruct:

<?php
class Example {
    public function __construct() {
        echo "Objekts izveidots\n";
    }

    public function __destruct() {
        echo "Objekts iznīcināts\n";
    }
}

$obj = new Example();
unset($obj); // Piespiedu iznīcināšana
?>

Piemērs, izmantojot __get un __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; // Vai izmet izņēmumu
    }
}

$store = new DataStore();
$store->name = "Alice"; // Izsauc __set
echo $store->name; // Izsauc __get
?>