Webboard

Pełna wersja: Prezentacja wypocin - czyli własny autoloader klas
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Siemka,

Zrobiłem mały autoloader klas i chciałbym prosić was o ocenę i rady. A to kod:

Kod PHP:
<?php
 
class AutoLoader{
 
    
    private $_ns
;
 
   private $_directory;
 
   private $_regexp;
 
   private $_replace;
 
    
    function __construct
($namespace){
 
       $this->_ns=$namespace;
 
       $this->register();
 
   }
 
    
    function register
(){
 
       spl_autoload_register(array($this'autoload'));
 
   }
 
    
    function autoload
($class){
 
        
        $this
->_regexp='/'.addslashes(DIRECTORY_SEPARATOR).'(\w*)$/';
 
       $this->replace=addslashes(DIRECTORY_SEPARATOR).'$1'.addslashes(DIRECTORY_SEPARATOR).'$1';
 
       $this->_directory='..'.str_replace(
 
               str_replace('/',DIRECTORY_SEPARATOR,$_SERVER['DOCUMENT_ROOT']),DIRECTORY_SEPARATOR,str_replace(['\\','/'],DIRECTORY_SEPARATOR,$this->_ns[$class])
 
           ).preg_replace(
 
               $this->_regexp,$this->replace,str_replace('\\',DIRECTORY_SEPARATOR,$class)
 
           ).'.php';
 
       require_once $this->_directory;
 
       if(file_exists($this->_directory))
 
           require_once$this->_directory;
 
   }
}
 
$namespace=[
 
   'Core\\Router'=>__DIR__.'/prezentacja/src/',
 
   'Core\\Controller'=>__DIR__.'/prezentacja/src/',
 
   'Core\\View'=>__DIR__.'/prezentacja/src/',
 
   'Core\\Model'=>__DIR__.'/prezentacja/src/'
];
 
new 
AutoLoader($namespace); 

Jako że kod może się ciężko czytać(wiem jest spory bałagan) śpieszę z wyjaśnieniem co robi co. A więc tak

  1.    W public/index.php mam takie coś require_once __DIR__.'/../vendor/autoloader.php'; >> tak zerżnięte z composera :D
  2.    Tworzę obiekt z klasy AutoLoader i przekazuję do niej tablicę $namespace
  3.    W konstruktorze zapisuję to co było w $namespace to wewnętrznej zmiennej klasy
  4.    Przeskakuję do metody register()
  5.    Uruchamiam spl'a
  6.    Gdy pojawi się zapotrzebowanie na klasę to spl wywołuje metodę autoload()
  7.    Wybieram odpowiedni element tablicy na podstawie $class
  8.    Obrabiam to wszystko tak, że wychodzi mi link do klasy.
I teraz proszę was, doradźcie mi co poprawić. Proszę o wszelkie rady:P

Ponadto chciałem się dowiedzieć co jeszcze muszę poprawić aby moje wypociny były zgodne z PSR-4? Jeszcze nie ogarniam tych standardów :/

Ps. Napisałem "Wszystkie rady" ale powinienem uwzględnić, że nie chcę rad typu przerzuć się na composera bo to będę robić, ale wolę najpierw wybadać teren :D

Dzięki!