Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Piszemy własnego CMS
Forum PHP.pl > Forum > PHP > Object-oriented programming
morpheouss
Witam wszystkich,

Jak już zapewne większość z Was wie, miałem ostatnio drobne problemy z samym sobą i kodem mojego autorstwa. Postanowiłem wziąść się jednak mocno do pracy i stworzyć jakiś większy projekt - CMS. Mam już pewien pomysł, oraz zarys tego jakby to miało wyglądać w przyszłości, jednak nie odrazu Rzym zbudowano winksmiley.jpg Przyznam szczerze że nie wiem od czego zacząć. Czy lepiej jest zacząć od głównego szkieletu, tzn kontroler, itp, czy może z początku zrobić klasy które będę w przyszłości wykorzystywał w projekcie?

Całość chciałbym zbudować obiektowo w oparciu o wzorzeć MVC lub HMVC.
Dziękuję!

P.S. Wiem, że wątki z tym pytaniem przewijały się już na forum, jednak nie potrafiłem tam znaleźć satysfakcjonującej mnie odpowiedzi. Część z nich schodziła do OT, część odnosiła się paradygmatu imperatywnego.
Fifi209
Zacznij od przeznaczenia i funkcji ów cms'a.
Stwórz bazę danych (staraj się zrobić to najwydajniej jak potrafisz)

Potem zaczynaj. Pamiętaj nie obejdzie się w cms'ie bez systemu szablonów, systemu cache.

Możesz też podpatrzeć jakieś gotowe rozwiązania. smile.gif
morpheouss
Ktoś ma jeszcze jakieś porady?
Riklaunim
W dobrym frameworku zrobienie systemu newsów z komentarzami, stronicowaniem, RSSem itd. to kwestia godzinnego tutoriala winksmiley.jpg Czytaj: użyj najlepszych narzędzi a stworzenie "CMSa" będzie prostym i relatywnie szybkim zadaniem, a i powstały produkt lichy raczej nie będzie winksmiley.jpg

Robienie wszystkiego od zera: obchodzenie koła na nowo. Nic konstruktywnego się raczej nie nauczysz, a i tempo prac będzie znacznie wolniejsze, a gotowy skrypt niekoniecznie ciekawy dla innych np. pod kątem modyfikacji, rozbudowy, przebudowy.
morpheouss
Cytat(Riklaunim @ 13.06.2009, 13:40:18 ) *
W dobrym frameworku zrobienie systemu newsów z komentarzami, stronicowaniem, RSSem itd. to kwestia godzinnego tutoriala winksmiley.jpg Czytaj: użyj najlepszych narzędzi a stworzenie "CMSa" będzie prostym i relatywnie szybkim zadaniem, a i powstały produkt lichy raczej nie będzie winksmiley.jpg

Robienie wszystkiego od zera: obchodzenie koła na nowo. Nic konstruktywnego się raczej nie nauczysz, a i tempo prac będzie znacznie wolniejsze, a gotowy skrypt niekoniecznie ciekawy dla innych np. pod kątem modyfikacji, rozbudowy, przebudowy.


mogłeś sobie darować ten $postcount++;
Riklaunim
A czego oczekujesz? Że podamy ci gotowy kod, powiemy czego masz użyć i co masz zrobić? Chcesz stworzyć CMSa? Więc jak chcesz go zrobić dobrze to zacznij od wyszukania najlepszych dla ciebie narzędzi do sprawnego stworzenia takiego CMSa. Z frameworków polecam np. CodeIgniter, czy Kohanę (jest ich wiele, kwestia ile potrzebujesz). Gdzie masz załatwioną sprawę rozdziału kodu (MVC), oraz poręczne helpery do formularzy, ich walidacji, w miarę prosty ORM na proste przypadki itd. Zaletą będzie możliwość wykorzystania przez ciebie lub użytkowników takiego CMSa innych aplikacji napisanych w tym frameworku smile.gif
morpheouss
Napiszę inaczej. Gdybym chciał korzystać z gotowców, to nie zawracał bym Wam głów taką pierdołą. Mam nadzieję że ostatecznie zostałem zrozumiany.
I proszę nie porównuj tego do wynajdywania koła, gdyż mija się to z celem. Wytłumacz lepiej dlaczego we wszystkich samochodach nie ma tego samego silnika, tylko większość producentów produkuje także jednostkę napędową. Albo lepiej nie tłumacz - nie potrzebuję OT i rad które mogę rozbić o kant stołu. Między innymi dlatego założyłem nowy temat, bo w tych, które znalazłem pisało to samo. Zaczynam odnosić wrażenie że tutaj nikt nie robi nic samodzielnie, może nikt nie umie, a tylko ja się tym przejmuję? W innym wątku pytałem o różnice pomiędzy MVC a HMVC - także nie dostałem konkretnej odpowiedzi. Wychodzi na to, że każdy zna tylko wyuczone regóły, czym jest MVC i umie z tego korzystać pod warunkiem iż zostało to już wcześniej zaimplementowane w jakimś frameworku, jak Kohana, czy Zend. Ale wskazać różnice między inną odmianą MVC, albo doradzić komuś kto chciałby zrobić coś samodzielnie nikt nie potrafi.
Riklaunim
Framework gotowcem nie jest, a gdy zaczniesz szukać dobrej pracy to spytają cię na starcie o znajomość takich narzędzi. A jak chcesz pisać wszystko od zera - twój wybór. Też kiedyś tworzyłem takiego CMSa "od zera" zintegrowanego z punBB, a gdy poznałem CodeIgnitera zmieniłem pogląd jak tworzyć aplikacje webowe.

Jak chcesz zaczynać od zera to zacznij od stworzenia prostego systemu wywołującego kontrolery (klasa/metoda) na podstawie np. ustalonych parametrów GET. A gdy to będzie działać rozbuduj kontroler tak by mógł ładować szablony, później też modele wykonujące zapytanie/zwracające wyniki. Taką prostą ramówkę mam w punFramework - plik mvc.php (download)

Co do wzorców projektowych - nie są po to by ich używać, czy przeprowadzać wzorcowe implementacje, tylko po to by łatwiej się programowało. Dlaczego nikt nie robi nic "samodzielnie"? Bo takie są realia rynku - klienta nie obchodzi jak pięknie zaimplementowałeś dany wzorzec - interesuje go funkcjonalność za którą zapłacił.
bełdzio
Cytat(morpheouss @ 13.06.2009, 22:17:46 ) *
Napiszę inaczej. Gdybym chciał korzystać z gotowców, to nie zawracał bym Wam głów taką pierdołą. Mam nadzieję że ostatecznie zostałem zrozumiany.


w jednym możesz być pewien i nam zauwafać; tworząc cms bez konkretnego frameworka, czy to jakiegos OpenSource czy własnego, stworzysz kolejnego potwora, z którego będziesz sam korzystał;

z tego co piszesz to zapewno nosisz się z pomysłem pisanie własnego frameworka; z własnego doświadczenia powiem Ci, że użycie OpenSource'owego frameworka jest dużo lepszym pomysłem smile.gif; zamiast skupiać się na wnętrznościach, których niewielu doceni, będziesz mógł się skupić na końcowej funkcjonalności, która tak na prawdę jest sensem istnienia CMS :-)
morpheouss
Z takim podejściem na rynku nie powinno pojawiać się nic nowego. Załóżmy że autor CI zadałby tutaj podobne pytanie w momencie kiedy nie było jeszcze CI. Spotkałby się z takim samym podejściem i być może idąc za Waszymi wskazówkami nie napisał CI - no bo po co? Przecież mamy tyle świetnych frameworków! Po co kolejny? A jednak ktoś to docenił! Rozwiązanie jest może o tyle lepsze, gdy tworzymy aplikację za którą weźmiemy pieniądze. Ja piszę hobbistycznie - bo lubie! A jeżeli z czasem udałoby mi się coś stworzyć, to dlaczego miałbym się tym nie pochwalić albo nie udostępnić kodu na licencji zatwierdzonej przez OSI? Nawet gdyby z całości podobała się wyłącznie 1 klasa, to uważam, że warto i tak na prawdę za przeproszeniem guzik mnie tutaj obchodzi Wasze zdanie na ten temat. Wiem co chcę w życiu robić i chyba jak każdy czasem potrzebuję porady, nakierowania na właściwą drogę.

Kilka przykładów z życia wziętych:
- po co tworzyć kolejną dystrybucję linuksa? a powstały z czasem inne świetne jak Arch, Ubuntu, Fedora, Gentoo
- Gentoo - powstaje Exherbo - po co? nie lepiej pomóc Gentoo? Każdy może tak powiedzieć!
- Joomla - własny framework i CMS zbudowany na jego podstawie - dlaczego nie skorzystali np z Kohany?

takie przykłady można mnożyć w nieskończoność.

Co do wzorców projektowych - zgadzam się z Riklaunim. Wiem, że chcę użyc MVC. Ale gdybym wiedział, że implementacja HMVC i dispatchera zajmie mi 2 razy więcej czasu, ale ułatwi dalsze programowanie, to może bym jednak wolał zaimplementować HMVC? Sęk w tym, że nikt nawet nie jest w stanie mi wytłumaczyć jakie jest zadanie ów dispatchera. Jakie są zalety i wady jego implementacji? I uwierzcie mi pytając o takie rzeczy czuję się tak, jak gdybym pytał o to jak upiec ciasto na forum wędkarskim. winksmiley.jpg
dr_bonzo
Cytat
to może bym jednak wolał zaimplementować HMVC? Sęk w tym, że nikt nawet nie jest w stanie mi wytłumaczyć jakie jest zadanie ów dispatchera. Jakie są zalety i wady jego implementacji? I uwierzcie mi pytając o takie rzeczy czuję się tak, jak gdybym pytał o to jak upiec ciasto na forum wędkarskim.

@morpheus: a kto ci obiecywal ze tutaj kazdy bedzie sie znal na wszystkim, ze dostaniesz odpowiedz na kazde z pytan?
Ja np. pierwszy raz slysze o HMVC, a co dopiero mialbym ci doradzac co lepsze.
Riklaunim
Sam używam Gentoo, ale jakoś nie zdobywa szturmem rynku dzięki nowym projektom, podobnie Joomla nie jest super produktem, a jednym z wielu CMSów na rynku. Nie jesteś pierwszy i nie ostatni co "wie lepiej" i "napisze lepiej" niż grupa zawodowców, która stworzyła powszechnie uznawaną i używaną aplikację. Próbować można, ale też trochę realizmu. Jeżeli chcesz pisać frameworka to warto znać to co już wymyślono żeby wyłapać to co ci się nie podoba, co można zmienić. Rozważania o wzorcach są bez sensu bo one nic same z siebie nie dają. Najpierw rozplanowano sobie jak rozłożyć kod, a dopiero później nazwano to MVC. CMS/Framework w PHP to nie jest wykład z filozofii Javy, ani technologia kosmiczna. Tych co chcą użyć aplikacji wali czy on jest MVC czy ŚŁŹ, tak samo jak użytkownik GMAILa zwisa czy on jest zgodny z XHTML 1.1 Strict czy nie. Ważne żeby spełniał ich oczekiwania.
Moli
Nie wiem czy znasz, do projektowania bazy jest fajne narzędzie - DBDesigner. A do zaprojektowania ogólnego układu systemu, możesz użyć iplotz.com, niby głupoty ale pomagają smile.gif

ps. Zły dział.
kbsucha
Cytat(Riklaunim @ 13.06.2009, 23:52:25 ) *
Sam używam Gentoo, ale jakoś nie zdobywa szturmem rynku dzięki nowym projektom, podobnie Joomla nie jest super produktem, a jednym z wielu CMSów na rynku. Nie jesteś pierwszy i nie ostatni co "wie lepiej" i "napisze lepiej" niż grupa zawodowców, która stworzyła powszechnie uznawaną i używaną aplikację. Próbować można, ale też trochę realizmu. Jeżeli chcesz pisać frameworka to warto znać to co już wymyślono żeby wyłapać to co ci się nie podoba, co można zmienić. Rozważania o wzorcach są bez sensu bo one nic same z siebie nie dają. Najpierw rozplanowano sobie jak rozłożyć kod, a dopiero później nazwano to MVC. CMS/Framework w PHP to nie jest wykład z filozofii Javy, ani technologia kosmiczna. Tych co chcą użyć aplikacji wali czy on jest MVC czy ŚŁŹ, tak samo jak użytkownik GMAILa zwisa czy on jest zgodny z XHTML 1.1 Strict czy nie. Ważne żeby spełniał ich oczekiwania.


Amen.

Ja jeszcze wrócę do tego HMVC? Ile poświęciłes czasu na przeglądniecie materiałów na ten temat w internecie? Na pierwszej stronie googla na frazę HMVC, znalazłem co najmniej 3 ciekawe strony traktujące o tym wzorcu, przeglądnąłem je pobieżnie i wydają się solidnie napisane, są nawet jakieś przykłady implementacji.

pozdr
Pr0100
moim zdaniem słaby pomysł. Większość firm kupuje strony. Jeżeli zaproponujesz klientowi Joomle zamiast autorskiego rozwiązania (opartego na FW) to wątpię czy wykonasz to zlecenie. Era darmowych CMSów dawno się skończyła.

Ale jeżeli pomimo tego chcesz napisać CMSa to:
- zadbaj o pełną modułowośc systemu, tak aby można było wyłączyć nie używane elementy strony
- obsługę różnych baz danych
- możliwość ściągnięcia i instalacji dodatkowych modułów (pluginów)/skórek z Panelu Administracyjnego (coś podobnego do pakietów w linuxie, coś takiego już chyba jest w SMF'ie)
- system cachowania

Jeżeli chodzi o wykorzystanie frameworka to ja bym to porównał do OS w komórce. Symbian/Windows jest zazwyczaj bardziej funkcjonalny niż autorski OS producenta. Ale firmy Apple oraz Google pokazały że zazwyczaj nie znaczy zawsze. Jeżeli zamierzasz to zrobić na poważnie to pisz od zera ale jeżeli masz tylko nadmiar wolnego czasu to pisz na FW.

Co do MVC to byłbym ostrożny. Wzorzec ten jest bardzo dobry ale tylko gdy doskonale wiemy co chcemy zrobić. Jakoś nie wyobrażam sobie rozbicia projektu na moduły napisanego według tego wzorca. Jak wyłączyć moduł z "komentarze" jeżeli jest on wykorzystywany w 4 kontrolerach i 15 widokach? smile.gif
morpheouss
dzieki wielkie
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.