Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak tworzyć pluginy do aplikacji?
Forum PHP.pl > Forum > PHP
colargol
Uczę się PHP i aby bardziej poznać budowę aplikacji tworzę od podstaw własnego prostego CMSa. Chciałbym go rozbudować o nowe funkcjonalności w formie pluginów (takie jakie są np. do wordpressa czy joomli), niestety nie wiem jak się do tego zabrać. Jakie są ogólne zasady pisania rozszerzeń/pluginów do aplikacji internetowych? na co muszę zwracać uwagę?

Przykładowo do prostego cmsa blogowego chciałbym dorobić plugin pozwalający na dodawanie ocen przez gości bloga, zarówno do wpisów jak i komentarzy.
patryczakowy
Poczytaj sobie może ci się przyda
http://www.slideshare.net/phpprog/wprowadz...n-w-php-4418977
Brand
Nie wiem jak to jest u Ciebie napisane, ale podejrzewam, że dodanie np. możliwości komentowania czy oceniania wiąże się z podmienieniem pliku odpowiedzialnego za wyświetlanie np. newsów. Znasz programowanie obiektowe? U mnie w CMSie rozwiązałem to tak, że jest katalog plugin i tam trzymam pliki nazwa_plugina.plugin.php. Linki mam takie http://strona.pl/news/view/przykladowy-news/. Taki odnośnik wywoła metodę view z parametrem przykladowy-news z klasy news. Klasa nazywa się w tym wypadku news_plugin. Z tym, że u mnie plugin to jakby jedna część serwisu - jeden moduł, np. newsy.
colargol
@patryczakowy
dzięki za link, bardzo dobre wprowadzenie do teorii pluginów w aplikacjach PHP

Cytat(Brand)
Nie wiem jak to jest u Ciebie napisane, ale podejrzewam, że dodanie np. możliwości komentowania czy oceniania wiąże się z podmienieniem pliku odpowiedzialnego za wyświetlanie np. newsów. Znasz programowanie obiektowe?

Właśnie o to mi chodziło. Niestety nie znam na tyle programowania obiektowego, żeby w nim napisać cały system.
Gdy dodajesz nowy plugin i podmieniasz plik, to co się dzieje z bazą danych? powiedzmy że dodajesz po kilka pól w kilku tabelach.
erix
Zapomnieli wszyscy o chyba jednym ważnym wątku: Temat: Aplikacje PHP Pluginy

Cytat
Gdy dodajesz nowy plugin i podmieniasz plik, to co się dzieje z bazą danych? powiedzmy że dodajesz po kilka pól w kilku tabelach.

Każda wtyczka powinna mieć coś w stylu instalatora i deinstalatora, choćby po to, aby pozmieniać strukturę bazy, coś przekonwertować, czy wykonać inne operacje, które są wymagane do jej prawidłowego działania.

Cytat
Jakie są ogólne zasady pisania rozszerzeń/pluginów do aplikacji internetowych? na co muszę zwracać uwagę?

Na tzw. hooki. Czyli kotwice-wyzwalacze, które umożliwiają podpięcie odpowiednich funkcji wtyczek wykonywanych w danym momencie, np. przy dodawaniu danych do bazy.

Niestety, nie jest tak różowo jak w JS, że można każdą funkcję przeciążyć, więc trzeba tych hooków zrobić czasem naprawdę wiele, żeby architektura była wygodna. Z programowania obiektowego, to na pewno musisz znać działanie i zastosowanie wzorca proxy (+magiczna funkcja __call).
Brand
Mogę Ci podać parę wskazówek, ale musisz poczytać o programowaniu obiektowym, żebyś zrozumiał i potrafił też sam coś sklecić. smile.gif
Co do moich linków to robota .htaccess, oryginalny link wygląda tak: http://strona.pl/index.php?go=news/view/przykladowy-news można tez użyć skróconego zapisu: http://strona.pl/?go=news/view/przykladowy-news. W index.php piszesz coś na wzór tego:
  1. $_URL = explode('/', $_POST['go']);
  2. $class = $_URL[0].'_plugin';
  3. $file = $_URL[0];
  4. $method = $_URL[1];
  5. require('plugins/'.$file.'plugin.php');
  6. $object = new $class;
  7. $object -> $method;

A przykładowy plik wtyczki np. plugins/news.plugin.php:
  1. class news_plugin
  2. {
  3. public function view()
  4. {
  5. echo 'wyświetlam newsa o id'.$_URL[2];
  6. }
  7. }

Pisane z pamięci, podałbym ci mój kod, ale on nie jest jeszcze doskonały. Musisz pododawać sporo if'ów. Ja jeżeli jest samo ?go=news to wczytuję metodę main z klasy news_plugin. Ogólnie trzeba ruszyć głową - sam się w tym gubiłem. Ja się uczyłem OOP z tego http://webcity.pl/webcity/programowanie_ob...e_w_php_5_cz__1 (trzyczęściowy artykuł) + trochę z Wikibooks i innych tego typu stron.

Edit:
Cytat
Gdy dodajesz nowy plugin i podmieniasz plik, to co się dzieje z bazą danych? powiedzmy że dodajesz po kilka pól w kilku tabelach.

Nie wiem dokładnie o co Ci chodzi. Instalacji plugin'ów jeszcze nie napisałem. Ale robi się to na takiej zasadzie, że dodajesz to wtyczki plik instalacyjny i odpalasz go i on wykonuje odpowiednie zapytania - tworzy nową tabelę, lub dodaje nowe pola jeżeli to aktualizacja.
colargol
Dzięki za wskazówki, robię to podobnie (tyle, że bez klas - same ify i includowanie)
z tymi pluginami to jest trochę bardziej skomplikowana sprawa niż myślałem, trochę będe musiał nad tym spędzić czasu

Brand
Ja też trochę spędziłem. Właściwie to powinno się to nazywać moduły, a nie pluginy, ale każdy nazywa jak chce. winksmiley.jpg
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.