System pluginów w Coyote: jak to zrobić?

1

Czasami musimy na 4programmers.net dodać jakiś kod, który nie jest częścią projektu i który nie może być udostępniony publicznie. Np. plugin który będzie swego rodzaju filtrem anty spamowym.

Ma ktoś pomysł na rozwiązanie tego problemu, tj. systemu pluginów? Ja mam co prawda swój pomysł, ale nie chce nic sugerować. Może ktoś ma jakieś lepsze rozwiązanie...

3

Ok, to ja zacznę:

Nie wiem jak w Laravelu, ale w większości frameworków istnieje coś takiego jak hooki/filtry/etc (preaction/postaction, itd).

Plugin może przy ładowaniu rejestrować swoje hooki/filtry zależnie od tego co ma robić - np. przykładowy plugin antyspam podpina się pod POST i weryfikuje w jakiś sposób czy post jest spamem. Jeśli nie - nic nie robi. Jeśli tak - blokuje request, albo loguje go do bazy podejrzanych postów, itp.

0

@msm to już chyba lepiej napisać swój własny jeden filtr który przegląda listę dostępnych pluginów i aplikuje je na danym żądaniu. Tak żeby nie spinać niepotzebnie tych pluginów z jakąś technologią/frameworkiem, tylko ze swoim wewnętrznym API. Przynajmniej nie ma bólu jak framework cośtam sobie pozmienia.

0

@msm: dokładnie. W Laravel jest coś takiego. Tutaj są to eventy :)

0

@Shalom - Zależy jak te filtry działają - przykładowo poza filtrami "przepuść/blokuj" (które pasują do antyspamu) mogą być też inne rodzaje zadań dla pluginów które się nie wpasują w taki prosty model. Ale jasne że zawsze można dodać kolejną warstwę abstrakcji i zrobić swój wrapper (pytanie czy to nie overengineering).

A tak w ogóle to dobrze wykorzystane pluginy/moduły są fajne, nawet niektóre "standardowe" funkcjonalności mogą tak powstawać żeby nie zaśmiecać core. Takie trochę programowanie aspektowe :P.

0

Framework nie zmieni raczej nic co mogłoby wpłynąć negatywnie jeżeli chodzi o wsteczną kompatybilność. Przynajmniej nie w gałęzi 5.x która jest obecnie.

0

NO jak bym zrobił tak, że pluginy rejestrują eventów, pod które chce się podpiąć. W miejscu, gdy jakiś eventów chcemy wywołać, to go wywołujemy z listą argumentów (np. Obiekt wiadomości, profil użytkownika) a ten plugin wywołuje na nim swoje operacje. Czyli wzorzec obserwatora. Wg mnie bardzo fajnie jest to zrobione w Magento, ale ma to tez swoje minusy. Jednak wg mnie jest to opcja do rozważenia. Fajnie można wtedy rozdzielić wszystko na Core plus szereg plugin w, które sumaryczny składają się na forum :) modularyzacja pełna parą

1 użytkowników online, w tym zalogowanych: 0, gości: 1