Destruktor

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania

Destruktor jest to metoda zawarta w klasie, która wykonuje się automatycznie podczas niszczenia instancji danej klasy (w procesie odzyskiwania pamięci). W każdej klasie PHP 5 destruktor ma zawsze takć samą nazwę metody: __destruct().

Zastosowanie destruktorów

Destruktory przydatne są wtedy kiedy chcemy aby na samym koścu wykonać jakiś kod. Może to być np. uprzćtniącie plików które byśy potrzebne na czas działałnia skryptu.

przykład destruktora

Bardzo prosta klasa ilustrująca wykorzystanie destruktora.

<?php
 class File {
 
  /**
   * Nazwa wczytanego pliku
   * @var string
   */	
  private $file = null;
 
  /**
   * Zawartość pliku
   * @var string
   */
  private $content = null;
 
  /**
   * Informacja o zmianach.
   * @var bool
   */
  private $save = false;
 
 
   /**
    * Wczytanie zawartości pliku
    * @param string $fileName nazwa pliku
    * @return void
    */
   public function __construct($fileName){
    $this -> file = $fileName;
    $this -> content = file_get_contents($fileName);
   }
 
   /**
    * Zwrżcenie zawartość
    * @return string
    */
   public function getContent(){
   	return $this -> file;
   }
 
   /**
    * Ustawienie zawartości
    * @param string $content Zawartość do ustawienia
    * @return void
    */   
   public function setContent($content){
   	$this -> file = $content;
   	$this -> save = true;
   }
 
   /**
    * Jezeli zaszśy zmiany w pliku zapis
    * @return void
    */
   public function __destruct(){
   	if($this -> save){
   	 file_put_contents($this -> file, $this -> content);
   	}   	
   }
 
 
 }
 ?>

Krżtkie wytłumaczenie działałnia. Tworzymy egemplarz klasy podając w argumencie nazwę pliku którego zawartość ma być wczytana. następnie możemy odczytać zawartść używając metody getContent(). Jeżeli zechcemy zmienić zawartość używamy metody setContent, gdzie zapisujemy informacje o tym że zawartość się zmieniśa. Na koścu wykonywania skryptu zostanie wywołana metoda dekstruktora która sprawdzi czy plik został zmieniony - jeżeli tak to zapisze jego nową wartość.


Destruktor w PHP4

chcęc stworzyć coś na wzżr destruktorów w php4 można posłużyć się funkcją register_shutdown_function. Można zrobić to np. tak:

<?php
 class Test {
 
  //konstruktor w php4 nazywa się tak samo nak nazwa klasy.
  function Test {
   register_shutdown_function(array(&$this, '__destruct'));
  }
 
  function _destruct(){
   echo 'nasz destruktor'; 
  }
 }
?>

Zobacz także

Wiki letter w.png To jest tylko zalążek artykułu. Jeśli możesz, rozbuduj go.