Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Framework a jego rozszerzenia.
Forum PHP.pl > Forum > PHP
uncuncunc
Jak zbudować rozszerzenia dla aplikacji/frameworku? Wystarczy że będą to same klasy o określonym interfejsie? Jak rozwiązaliście to u siebie? Moja wizja jest mniej więcej taka:

Framework opiera się o MVC, wiadomo... Rozszerzenia dla aplikacji widziałbym tak, jako zwykła klasa PHP, w które obowiązkowo byłby metody install, odpowiedzialne za instalacje rozszerzenia, uruchamiana ta metoda byłaby jedynie z poziomu panelu... po instalacji dodawane byłby informacje do tablicy w katalogu z aplikacją o tym że rozszerzenie zostało dodane i działa.

Tylko czy to właśnie tak ma wyglądać? Jak zrobić aby rozszerzenia były hermetyczne? Aby z samej klasy nie można było np. czegoś zrobić?
Mephistofeles
Poczytaj jak to jest zrobione w Symfony.
Piszesz własny framework? Z rozszerzeniami? Czyli wygląda na to, że chcesz mieć framework dla samego frameworka, nie lepiej skorzystać z gotowego?
lukaskolista
Wiesz... nie kazdy przyjmuje filozofie innych programistow bez zastanowienia. Gotowce uposledzaja, ograniczaja myslenie i wlasna inwencje tworcza programisty. Sam korzystam z komercyjnego frameworka bo pracuje sie w nim szybciej, ale pisze tez swoje rzeczy, zeby nie stac w tyle i slepo nie przyjmowac tego, co zrobia inni. Jezeli chce napisac swoj to wedlug mnie nie jest wcale lepiej korzystac z gotowcow, chociaz pisanie wlasnego fw to bardzo duze wyzwanie i trzeba duzej motywacji, aby napisac dobry framework
Mephistofeles
Upośledzać to mogą CMSy. Framework ma wspomagać programistę, a nie go zastępować, a użycie dobrze zaprojektowanego frameworka nie ogranicza, a rozwija myślenie, naprowadza na dobre praktyki.
Podobnie jest w gamedevie, każdy na początku chce pisać silnik, bo przecież własny silnik jest zawsze lepszy. Tylko potem pojawia się problem, bo pisząc silnik nigdy nie napiszesz gry. Mało jest osób, które są w stanie napisać dobry silnik.
Analogicznie jest w PHP, pisanie własnego frameworka dla samego pisania nie ma sensu i najprawdopodobniej skończy się na kopiowaniu gotowych rozwiązań. Pisać własny można gdy gotowe nie wystarczają, ale nawet wtedy warto korzystać z gotowych komponentów (stąd taka budowa Symfony 2).
!*!
Mephistofeles - bzdury szerzysz, uzasadnienie masz tutaj
Mephistofeles
Nie, nie widzę tam dobrego uzasadnienia poza Twoimi postami.

Dobra, teraz dopiszę:
Zastanów się po co piszesz własny framework - czy dlatego, że Twoja aplikacja jest niestandardowa na tyle, że żaden gotowy nie pasuje, może coś Ci się nie podoba w gotowych frameworkach? Ok, pisz własny, tutaj ma to sens. Ale jeśli chcesz pisać, bo chcesz mieć koniecznie własny, to zastanów się czy jesteś w stanie napisać użyteczny kod, dający się wykorzystać w wielu projektach. Bo jeśli nie, to całe pisanie nie ma sensu.

Jeśli natomiast chcesz napisać aplikację i zaczynasz od frameworka to jest błąd. Sprawdź najpierw gotowe rozwiązania, bo nie ma sensu wymyślać wszystkiego od nowa, szkoda na to czasu, który możesz przeznaczyć na właściwą funkcjonalność.

@!*!: Dlaczego na rynku gier jest tak mało gotowych silników i tak wiele gier opartych na jednym z nich? Bo pisanie własnego zwyczajnie się nie opłaca. Poważny, elastyczny framework to także spore wyzwanie, dlatego istnieją gotowe.
!*!
Cytat(Mephistofeles @ 4.06.2012, 14:44:40 ) *
Nie, nie widzę tam dobrego uzasadnienia poza Twoimi postami.


Cała dyskusja w tamtym wątku, obala to co napisałeś

Cytat
Piszesz własny framework? Z rozszerzeniami? Czyli wygląda na to, że chcesz mieć framework dla samego frameworka, nie lepiej skorzystać z gotowego?


Każdy robi co chce, a gotowce, to tylko gotowce i nie muszą, a nawet mogą być dalekie od tego co robi się samemu i to nie musi oznaczać że robi się coś źle.

Porównujesz sytuacje pisania silnika gry do FW PHP? Mocne...
Mephistofeles
Ech. W każdym razie o ile uncuncunc nie napisze kolejnego "gotowca" to w końcu się zorientuje, że takie podejście nie ma sensu. Owszem, nauczy się trochę przez okres pisania, ale w tym czasie napisałby kilka aplikacji i nauczył struktury jakiegoś frameworka, co mu się w życiu bardziej przyda.
!*!
Cytat(Mephistofeles @ 4.06.2012, 15:05:08 ) *
co mu się w życiu bardziej przyda.

Jeśli pracuje dla kogoś, to być może masz racje, ale jak będzie producentem to nie. Kwestia podejścia.

A co to tematu, to dobrym sposobem jest nieograniczanie twórcy rozszerzenia w czymkolwiek, koniec końcem klient i tak musi wiedzieć skąd te rozszerzenie pochodzi i czy ono na pewno działa tak jak powinno, to jak zostanie dokonana autoryzacja, zależy od struktury samej aplikacji, bądź FW.
Spawnm
Jeżeli chcecie prowadzić kolejną dyskusję na temat czy jest sens pisać własny fw, to proszę założyć osobny temat.
uncuncunc
Ale mają działać w zastępstwie czy być gdzieś uruchamiane? Np. jak będę chciał zmienić coś w klasie artów, to wystarczy że dziedziczę po tej klasie + interfejs dla rozszerzeń i wtedy ładuję zamiast starej klasy, tą z rozszerzeniami? tylko jak to zrobić "automatycznie" czy się po prostu nie da i za każdym rozszerzeniem jest potrzebna zmiana np. w konstruktorze?

A jeśli taj, to na jakim poziomie to sprawdzać czy rozszerzenie do danej klasy istnieje, a jak tak to czy załadować?
!*!
Cytat
Ale mają działać w zastępstwie czy być gdzieś uruchamiane?

To zależy, bo rozszerzeniem może być wszystko.

Cytat
Np. jak będę chciał zmienić coś w klasie artów, to wystarczy że dziedziczę po tej klasie + interfejs dla rozszerzeń i wtedy ładuję zamiast starej klasy, tą z rozszerzeniami?

Tak. Jeśli to tak zaimplementujesz.

Cytat
tylko jak to zrobić "automatycznie" czy się po prostu nie da i za każdym rozszerzeniem jest potrzebna zmiana np. w konstruktorze?
A jeśli taj, to na jakim poziomie to sprawdzać czy rozszerzenie do danej klasy istnieje, a jak tak to czy załadować?


Zależy od konstrukcji FW, i tego co chcesz rozszerzyć. Możesz to zrobić tak że jeśli kontroler aplikacji jest rozszerzeniem kontrolera FW, to ten ostatni sprawdza to ze swojego poziomu. Ewentualnie zrzucić to na loader klasy, jak wyniuchasz że rozszerzenie do niej istnieje i jest w rejestrze(tablicy na true) to ładujesz klasę rozszerzającą a nie podstawową.
Mephistofeles
Nie rozumiem. Jakiej klasie artów? Artykuły? Framework to szkielet, a nie CMS, nie ma gotowych klas dla artykułów, newsów, galerii.
Według mnie rozszerzenia są dla użytkownika, mają ułatwiać pisanie i udostępniać kod bez jego powtarzania. Nie powinny pracować automagicznie, nie powinny od siebie w dużym stopniu zależeć.
Sprecyzuj swój pomysł, bo jak napisałem nie bardzo rozumiem.
uncuncunc
@up Racja. To jak rozwiązać to po stronie aplikacji?
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.