Aplikacje PHP - Pluginy |
Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
Aplikacje PHP - Pluginy |
22.11.2005, 19:02:13
Post
#21
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków |
Cytat(Vengeance @ 2005-11-22 16:37:41) A co jeśli chcemy napisać plugin do pluginu będącego pluginem innego pluginu naszej aplikacji? rotfl! To wtedy trudniamy sobie życie Pisząc PluginManager stweirdziłem, że najlepiej będzie zrobić sam loader.
Można to użyć tak:
Kod troszke badziewny, pisany z palca. Jak anrazie działa, będe go przebudowywał. PS. Pisząc ten post, pomyślałem o tym, że można by zamieszać w to iteratory |
|
|
27.12.2005, 20:54:54
Post
#22
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
Cytat(Vengeance @ 2005-11-22 14:37:41) A co jeśli chcemy napisać plugin do pluginu będącego pluginem innego pluginu naszej aplikacji? rotfl! wydaje mi sie ze trzeba stworzyc jeszcze klase (lub zaimplementowac w loaderze) kontrole zaleznosci... czyli np. plugin daje komunikat o braku potrzebnej mu do dzialania klasy stopuje skrypt... lub nie laduje sie wcale i wpisuje blad do logów.. no czy cos w tym rodzaju |
|
|
27.12.2005, 21:08:39
Post
#23
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków |
A co jeśli pluginem jest wybieraniem odpowiedniej bazy danych ? Stopujesz go i cały system pada.
pozdrawiam |
|
|
27.12.2005, 21:31:39
Post
#24
|
|
Grupa: Zarejestrowani Postów: 866 Pomógł: 32 Dołączył: 2.06.2004 Skąd: Wrocław Ostrzeżenie: (0%) |
Cytat(Vengeance @ 2005-11-22 16:37:41) A co jeśli chcemy napisać plugin do pluginu będącego pluginem innego pluginu naszej aplikacji? rotfl! Tutaj chyba taki pattern jak Decorator by dał radę. Moim zdaniem nie da się zaimplentowac jakiegoś generalnego API dla pluginów. Jeden moduł służący jako kontroller pluginów który nie pozwoli m.in używać dwóch różnyych pluginów robiących to samo ale w inny sposób. + Bardzo przejzysty kod (oczywiście wszystko obiektowo) z bardzo jasnym rozdzieleniem częsci protected od private każdej klasy. + Pluginy jako rozszerzenia danych klas (extends) zastepujące dane klasy (ichh funkcje w kodzie i wywołania) ALBO (co jest chyba ciekawsze) Plugin jako Decorator tylko że ttu z implentacją będzie bardzo trudno -------------------- |
|
|
27.12.2005, 21:35:48
Post
#25
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) |
Ja pluginy w swoich aplikacjach rozwiazuje w inny, okreslony sposob i ktory dziala, nie bedac abstrakcja programistyczna
Mam w kodzie aplikacji miejsca uruchamiajace pluginy owszem nie moge ich miec w dowolnym miejscu kodu. Ale np uruchamiajac plugin koszyka moge z katalogu produktow zrobic pseudosklep - w sam plugin jest uruchamiany w dwoch miejscach. Kod html jest umieszczony dzieki komentarzom zawartym w danym templacie i prostemu str_ireplace. Ot cała filozofia -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
28.12.2005, 18:19:40
Post
#26
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
Cytat(Ociu @ 2005-12-27 20:08:39) A co jeśli pluginem jest wybieraniem odpowiedniej bazy danych ? Stopujesz go i cały system pada. heeh, zakladam podzial aplikacji na elementy CORE i dodatkowe (rozszerzenia funkcjonalnosci)... wtedy mozna sie pobawic w sposob dwojaki: dla elementow CORE zrobic dla pluginow API, dla rozszerzen loader'a... w sumie nie bawilem sie w pluginy (chociaz nagminnie stosuje loadery baz danych factory patternem, a to mozna juz nazwac pluginami)... |
|
|
28.04.2006, 20:00:11
Post
#27
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) |
Uniwersalnego sposobu mysle nie ma. Ostatnio robilem serwis, ktory w oryginale byl goły... jednak w miare dodawania pluginow jego funkcjonalnosc sie rozszerzala: dodaj zdjecie, wiadomosci prywatne, i tak dalej...
Za najprostsze rozwiazanie uznalem stworzenie abstrakcyjnej klasy Plugin, klasy PluginManager ładujacej pluginy. Ogolnie rzecz biorac przydaly sie wzorce projektowe Factory oraz Strategy. Zabawa przednia po prostu super milo, gdy programowanie sprawia przyjemnosc programiscie.. -------------------- eh, co polska wódka to polska wódka
|
|
|
27.05.2006, 12:39:34
Post
#28
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) |
Mi sie udalo napisac system do obsugi pluginow w moim programie nad ktorym kiedys pracowalem
Ale jest jedna sprawa, niema uniwersalnej metody obsugi pluginow, bo w kazdym systemie pluginy sa do czegos innego, ale tak bardzo ogulnie jest jedan metoda: zrobic tabele w bazie danych ktura przechowuje adres guwnego pliku z pluginem (php), i gowne class pluginu oraz funkecje Main() w ten sposow program bedzie includowal plik z pluginem, (ale ten plik niczego nie robu przed wywolaniem funkcji Main()), i wykona :
w ten sposob mozna zrobic pluginy, aha i klasy w tym przypadku maja za zadanie wyruzniac pluginy, bo wszyskie beda wywolywac funckje Main. Ten post edytował nasty_psycho 22.03.2007, 11:16:36 |
|
|
27.05.2006, 17:05:12
Post
#29
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków |
Myślę, że ta metoda nadaje się lepiej do flitrów niż do pluginów.
IMHO, filtry, to klasy, które muszą mieć metodę o danej nazwie, main, execute, perform etc. która jest wykonywana. Można narzucić tą metodę ( interfejsy i te sprawy ). Działała to na zasadzie użyj i zapomnij. Pluginy, to klasy, które nie są czymś ograniczone, to klasy (można oczywiście to zrobić, to zależy od piszącego), które poprostu są dodatkami, np. BlockController, mamy do nich dostęp cały czas.
Przez co możemy odwoływać się do pluginu w każdym miejscu w skrypcie. |
|
|
28.05.2006, 21:19:32
Post
#30
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
ja robie w ten sposob:
Dajmy na to jest klasa $module, ktora jest baza dla wszystkich wtyczek (wtyczki ja extendsuja). Do tego jest cos takiego jak kontroler modulow. W pliku startowym jest on inicjowany, includuje wlaczone wtyczki (globalna tablica z nazwami), tworzy odwolania w tablicy (jedna wtyczka = jeden element). Potem jest ona odpytywana ($wtyczka->init()), zeby sobie mogla poustawiac zmienne itp. (moglem dodac sprawdzanie, czy wtyczka jest na 100% do mojego systemu, ale pisze wtyczki tylko ja, to mi nie trzeba bylo ). Potem (po inicjowaniu) odpalam metody run(), aby mogly sie zainicjowac niejako na drugim etapie (gdy sa zaleznosci pomiedzy modulami, np. wtyczka od sql). Na dobranoc jest shutdown(); zapisuje dane, itp. Pisane pod PHP4, proste, niezawodne i () dzialajace. Ten post edytował erix 28.05.2006, 21:20:49 -------------------- ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
29.05.2006, 00:05:00
Post
#31
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) |
Ktos korzysta z wlasnych silnikow pluginowych w waszych dzialajacych ( nie eksperymentalnych ) projektach Patrzac na to co piszesz tutaj jestescie bardzo pracowici i kazdy z pomyslow wymaga duzo kodu by cokolwiek wlaczyc :|
Ten post edytował NuLL 29.05.2006, 00:05:36 -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
1.06.2006, 20:18:08
Post
#32
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 23.11.2004 Ostrzeżenie: (0%) |
mi podoba sie polaczenie Visitora z Componentem. lub jesli ktos chce to Observator.
|
|
|
23.06.2006, 14:55:49
Post
#33
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) |
Cytat mi podoba sie polaczenie Visitora z Componentem. lub jesli ktos chce to Observator. Cokolwiek to znaczy. A ktos moze przygladal api pluginowemu Wordpressa Wg mnie kawal dobrego kodu i pomyslu -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
28.06.2006, 12:08:19
Post
#34
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
Hej.
Myślę że tutaj z pomocą może przyjść Pico Container (Java) i port do php. Chyba Paweł Kozłowski z Supermedia to pisał. Samo rozszerzanie może bez problemu odbywać się na zasadzie wykorzystania wzorca Decorator - problem był w centralizowaniu dodawania(wstrzykiwania) w łancuch tworzenia zależności między obiektami właśnie tego plugin'u który nam potrzebny i rozszerzenia obiektu powyżej - Pico może to rozwiązać, ale narazie poza przeczytaniem ogólników nic więcej nie mogę powiedzieć, będę to testował - jak dojde do czegoś logicznego to napiszę. pozdrowka Ten post edytował anas 28.06.2006, 12:08:43 |
|
|
24.03.2007, 19:32:47
Post
#35
|
|
Grupa: Zarejestrowani Postów: 442 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) |
Ostatnio zastanawiam nad użyciem AOP w celu uzyskania funckjonalności pluginów.
W ten sposób bardzo prosto można dodać/tworzyć dowolne pluginy. Przykład1: Plugin autoryzacji
Przykład1: Plugin BBCode do artykółów
W ten sam sposób można dodać najprzeróżniejsze pluginy, a nawet pluginy pluginów pluginów.... Zalety: + można dodać prawie każdy możliwy plugin + zero przygotowań kodu / 0 nadmiarowych linii kodu + może współistnieć z innym systemem pluginów + odnosimy korzyści z użycia AOP ( poprawa modularności, itp. ) + można dać pluginy/filtry na np. konstrukcję obiektów/ustawienie właściwości co w normalnym podejściu byłoby trudne + można połączyć łatwo z PicoContainer'em ( nałożyć pointcut'a na tworzenie obiektów ) Wady: - pomocna jest dobrze zaplanowana architektura ( drobne, krótkie metody, używanie interfejsów, itp. ) - narazie AOP dla PHP jest w powijakach ( nie jest jednak fatalnie ) - dodatkowa faza wdrażania - weaving ( jedno zadanie Phing'a/Make'a itp. załatwia sprawę ) - wymaga zaznajomienia się z AOP Linki: * PHPAspect * PHP AOP * AspectJ ( pierwowzór wszystkich implementacji AOP ) Ten post edytował UDAT 24.03.2007, 19:33:51 |
|
|
29.03.2007, 12:37:43
Post
#36
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 1.05.2006 Skąd: Leżajsk\Kraków Ostrzeżenie: (0%) |
Witam
Myślę że tutaj z pomocą może przyjść Pico Container (Java) i port do php Jestem takiego zamego zdania, tylko ja napisalem swoj wlasny Container... z wsparciem dla wzorca Decorator... Na razie go tetuje ale testy wpypadaja obiecujaco, moze nie ma takiego uniwersalizmu i takich mozliwosci jak Pico ale mysle ze w miare rozwoju to dogonie Pico ... Wg mnie to najlepsze rozwiazanie.... Pozdrawiam -------------------- Errare humanum est
|
|
|
1.04.2007, 09:22:42
Post
#37
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 25.09.2006 Ostrzeżenie: (0%) |
W Rapide jest to ciekawie zrobione, możliwe są cztery rodzaje pluginów:
1. Przed uruchomieniem procesu wykonywania akcji 2. Przed wykonaniem każdej akcji 3. Po wykonaniu każdej akcji 4. Po zakonczeniu uruchamiania akcji Załodowanie konkretnego pluginu:
W tym przypadu akurat plugin ACL, korzysta z metody preExecution(wykonywana przed wywołanie konkretnej akcji):
-------------------- skocz.org - system skracania linków
|
|
|
2.04.2007, 14:21:08
Post
#38
|
|
Grupa: Przyjaciele php.pl Postów: 384 Pomógł: 6 Dołączył: 11.09.2004 Skąd: Grodzisk Mazowiecki Ostrzeżenie: (0%) |
Hola, hola, powoli. Ale to co pokazałeś z Rapide to raczej Filtry i implementacja Intercepting Filter. W temacie chodzi o coś innego, przeczytaj jeszcze raz od początku.
Za pomocą czegoś takiego nie da się zrobić pluginu tylko filtr! To mała różnica -------------------- |
|
|
3.04.2007, 16:39:38
Post
#39
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) |
Imho @nasty_psycho już dobrze kombinuje:
http://forum.php.pl/index.php?s=&showt...st&p=260817 NuLL podał dobry przykład Wordpressa, jednakże pluginy sa jedynie ładowane a przy większej organizacji danych trzeba funkcje do templata wstrzykiwac samemu. Drobna uwaga to to, że dobrze jest to zrobione, że opcje same dodają się do górnego menu (super). Cytat Hola, hola, powoli. Ale to co pokazałeś z Rapide to raczej Filtry i implementacja Intercepting Filter. W temacie chodzi o coś innego, przeczytaj jeszcze raz od początku. Strzałek, nie patrz teraz pod kątem co to jest i jak ładowane, ale jak to wykorzystujemy. Możemy zrobić sobie plugin, który będzie integrował w tablice $_GET i $_POST, który wykryje włączone/wyłączone magic quotes i wykona odpowiednie kroi przed executem jakiegokolwiek kontrolera. Odbiegając od filozofii... pojawił się tutaj post, w którym został poruszony problem dajmy na to bbcode w odpowiednich miejscach aplikacji, np w treści newsa, ale w komentarzach już nie. Nie jestem pewnien, czy możliwy jest superelastyczny sposób, aby przefiltrować takie dane. Jeżeli chceilibyśmy sprawdzac czy istnieje ewentalny plugin do załóżmy obiektu newsa. Każdny news potraktujmy jako obiekt:
sprawdzimy czy jest plugin do przefiltrowania tytułu newsa i podejmiemy odpowiednie ktoki, jednaże w treści bbcode by nie został użyty. Wydłuża się tutaj czas działania apliacji o więcej niż "troszkę". Tak jak to było powiediane wcześniej, nie ma uniwersalnego API do ładowania pluginów. Moim zdaniem ZAWSZE będzie potrzebna ingerencja programisty, chociażmy tak:
-------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem. |
|
|
4.04.2007, 10:37:25
Post
#40
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
Hola, hola, powoli. Ale to co pokazałeś z Rapide to raczej Filtry i implementacja Intercepting Filter. W temacie chodzi o coś innego, przeczytaj jeszcze raz od początku. Za pomocą czegoś takiego nie da się zrobić pluginu tylko filtr! To mała różnica W dodatku to jest jeszcze okrojona wersja filtrów z Zend Framework. |
|
|
Wersja Lo-Fi | Aktualny czas: 26.09.2024 - 12:41 |