недеља, октобар 12, 2014

Automatsko učitavanje klasa

Kada pišete klase, obično svaku klasu smeštate u poseban fajl, a kada želite da instancirate sve te klase, onda morate svaki fajl da učitate posebno. U PHP-u to više nije neophodno zato što od verzije 5 možete da definišete __autoload funkciju koja će automatski biti pozvana svaki put kada pokušate da instancirate neku klasu koja do tad nije bila definisana.

Primer:

<?php
  function __autoload($class){
      $filename = strtolower($class) . '.php';
      $file = "include/$filename";
      include $file;
  }
  $c1 = new Class1();
  $c2 = new Class2();
?>

U primeru se podrazumeva da klase čuvate u fajlovima koji imaju isti naziv kao i naziv klasa ali __autoload funkciju možete prilagoditi vašem načinu imenovanja datoteka. 

spl_autoload je došao sa PHP verzijom 5.1.2 i dozvoljava vam da definišete više autoload funkcija za učitavanje klasa, biblioteka, interfejsa itd.

Primer:

<?php
  function classLoader($class){
      $filename = strtolower($class) . '.php';
      $file = "include/$filename";
      if(!file_exists($file)){
   return false;
      }
      include $file;
  }
  spl_autoload_register('classLoader');
  spl_autoload_register('libLoader');
  $c1 = new Class1();
  $c2 = new Class2();
?>

Više o ovome na:

http://www.codeforest.net/autoload-your-classes-in-php
http://www.phpro.org/tutorials/SPL-Autoload.html
http://php.net/manual/en/function.spl-autoload.php

Нема коментара:

Постави коментар