Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]System pluginów/hooksów
Forum PHP.pl > Forum > PHP
Magan
Witam!

Tak, przeszukałem forum w poszukiwaniu rozwiązania nurtującego mnie problemu. Otóż, założenie jest z pozoru banalne - zaprojektowanie systemu pluginów (czy też hooksów) by były jak najprostrze w implementacji. Ba, wujek Google, gdyby był człowiekiem, miał by mnie już dość od nadmiaru zapytań jakich go zasypałem. Ale do rzeczy.

Koncepcja jest taka, by przygotowany odpowiednio system (opierający się głównie na panelu administracyjnym i uprawnieniami użytkownikia - globalnymi i poszczególnymi) posiadał możliwość dowolnego rozwijania go wedle potrzeb. Przykład z phpBB jest (przynajmniej za czasu phpBB by przemo - nie wiem jak obecnie wygląda sytuacja) jest według mnie conajmniej tragiczny - edycja poszczególnych plików jest czasochłonna, pracochłonna i naraża programistę oraz silnik na wprowadzenie błędów oraz utratę bezpieczeństwa samego silnika. Nie wiem jak wygląda sytuacja w obecnie (chyba, ale na to wszystko wg. mnie wskazuje) jednym z najpopularniejszych cms'ów jakim jest WordPress choć widać, że to narzędzie jest potężne i wyewoluowało do tego stopnia, że programiści dużych firm decydują się na budowanie w nim stron firmowych - takie moje obserwacje, bez hejtu.

Oczywiste jest to, że bez zastosowania OOP się nie obejdzie jednak geniusz tkwi w prostocie, a prostota niestety przychodzi po czasie. Na podstawach OOP nie może się skończyć jednak nie widzę nadal powodów by stosować abstrakcje obiektów lub interfejsy (interface). Pluginy nie wchodzą raczej w grę, wydaje mi się, że ich natura ma zbyt słabe zastosowanie. Rozważał bym raczej nad zastosowaniem hooksów, ale nie wiem od której strony to ugryźć. Zakładając, mam gotowy silnik i chcę go rozszerzyć o możliwość pisania oraz wyświetlania wpisów - ok. Ale co zrobić gdy nagle chcę dodać do tego (załóżmy) galerię oraz ulepszyć do o WYSIWYG? Moje wyobrażenie jest następujące - coś w rodzaju "kontrolek" sprawdzających czy poszczególny hooks (obiekt, obiekt-dziecko lub obiekt "samodzielny") posiada metodę o danej nazwie odpowiadającej elementowi silnika który chcemy zmodyfikowac. Równie dobrze można by użyć same funkcje, sęk w tym, że hooks w mojej koncepcji ma być obiektem który zawiera zestaw metod modyfikujące różne elementy strony. Przekładało by się to na to, że w wielu momentach musiał bym stosować funkcję która by sprawdzała, czy odpowiednia metoda istnieje. Może jest jakaś metoda magiczna którą da się uruchomić po każdym użyciu metody w klasie? Jakieś pomysły? Dodam, że mój silnik ma już kilka wersji (każda z dopiskiem na końcu "_backup1", "_backup2" ... "_backupN") i każda okazuje się w rezultacie do bani.


Proszę o pomysły, sugestie. Myślę, że wszyscy byśmy na tym skorzystali.
Pozdrawiam.



EDIT: Proszę wybaczyć za dublowanie, ale przeglądając wyszukiwarkę w pogoni za znalezieniem rozwiązania problemu natchnąłem się na metodę magiczną __call. Metoda ta jest wywoływana jeśli zostanie wywołana metoda która nie istnieje w obiekcie. Czy istnieje sposób by metoda mogła być wywoływana przy wywoływaniu klas które istnieją w obiekcie?
styryl
Poczytaj jak ma to laravel na eventach zrobione http://laravel.com/docs/events

Do tego prosty przykład funkcjonalnie http://stackoverflow.com/questions/42/best...php-application oraz http://stackoverflow.com/questions/2031657...-implementation
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.