Metoda has 0 friends



Autoloader dla PHP5

Swego czasu napisałem klasę, która pozwala zapomnieć klientowi o używaniu funkcji w rodzaju include czy require_once.
Działanie jest relatywnie proste: klasa na podstawie konfiguracji przechowywanej w pliku XML skanuje wskazane katalogi, tj. buduje mapę plików *.php i ich lokalizacji. Dzięki przykryciu funkcji __autoload() wyszukuje w mapie odpowiednią klasę/interfejs i dołącza ją do wykonywanego skryptu w momencie żądania.
Jedyne o czym należy pamiętać, to konwencje nazewnicze których trzeba się trzymać (jeśli podobnie jak ja, nie lubisz stosować się do czyichś, zawsze możesz zmodyfikować metodę load() ) – klasa ich pilnuje. Istota konwencji polega na różnicach w zapisie nazw plików i deklaracji wewnątrz ich: klasy trzymamy w plikach Nazwa.class.php i tak też je deklarujemy, tj.
class Nazwa {}
Interfejsy trzymamy w plikach Nazwa.interface.php, natomiast deklarujemy nieco inaczej:
interface iNazwa {}
z kolei klasy abstrakcyjne, jak można się domyślić przechowujemy w plikach Nazwa.abstract.php, a deklarujemy jako:
abstract class aNazwa {}
Tyle zasad. Klasa dodatkowo pilnuje „sztucznej” przestrzeni nazw, sztucznej ponieważ tylko zgłasza E_USER_ERROR w przypadku zindeksowania duplikatów.
Nie jest chyba niczym dziwnym, że w przypadku większych projektów, każdorazowe indeksowanie struktury katalogów ma znaczący wpływ na wydajność aplikacji. W swojej wspaniałomyślności ;-) przewidziałem to i wprowadziłem dodatkowy atrybut konfiguracyjny, tj. cache który ustawiony na true, przechowuje mapę w postaci zserializowanej tablicy, umożliwiając szybki jej odczyt. Oczywiście cache należy stosować tylko w środowisku tzw. produkcyjnym, ponieważ w przeciwnym wypadku nowo dodane klasy będą poza zasięgiem autoloadera.
Klasę można pobrać stąd i oczywiście zapisać ją zgodnie z konwencjami ;-) jako LoadMagic.class.php (uploader wordpressa zmienia nazwę pliku). DTD (robione na szybkiego, wybaczcie1) do pliku konfiguracyjnego znajduje się tutaj.
1 Piszę wybaczcie, bo jakimś cudem ten blog subskrybuje 15 osób. Wow. Metoda has 15 friends!


Trackbacks & Pingbacks

Komentarze

  1. * jas says:

    link nie działa, co sie stalo ?

    | Odpowiedz Zamieszczone 12 years, 8 months ago
  2. Go crawl back in your cave. I’m done with ignorant fools like you for the day…there are more important things to do then worry about simpletons on thi Click https://twitter.com/moooker1

    | Odpowiedz Zamieszczone 8 years, 1 month ago


Dodaj komentarz