Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Piszemy własnego CMS, czyli: co? gdzie? kiedy? i dlaczego?
morpheouss
post 13.06.2009, 10:33:37
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.04.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Fifi209
post 13.06.2009, 10:39:10
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
morpheouss
post 13.06.2009, 12:25:16
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.04.2009

Ostrzeżenie: (0%)
-----


Ktoś ma jeszcze jakieś porady?
Go to the top of the page
+Quote Post
Riklaunim
post 13.06.2009, 12:40:18
Post #4





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Riklaunim 13.06.2009, 12:49:27


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
morpheouss
post 13.06.2009, 19:15:45
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.04.2009

Ostrzeżenie: (0%)
-----


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++;
Go to the top of the page
+Quote Post
Riklaunim
post 13.06.2009, 21:09:49
Post #6





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

Ostrzeżenie: (0%)
-----


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


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
morpheouss
post 13.06.2009, 21:17:46
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.04.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował morpheouss 13.06.2009, 21:24:33
Go to the top of the page
+Quote Post
Riklaunim
post 13.06.2009, 21:26:33
Post #8





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

Ostrzeżenie: (0%)
-----


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ł.

Ten post edytował Riklaunim 13.06.2009, 21:30:11


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
bełdzio
post 13.06.2009, 21:30:23
Post #9





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


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 :-)


--------------------
Go to the top of the page
+Quote Post
morpheouss
post 13.06.2009, 22:00:12
Post #10





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.04.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
dr_bonzo
post 13.06.2009, 22:14:32
Post #11





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


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.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Riklaunim
post 13.06.2009, 22:52:25
Post #12





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

Ostrzeżenie: (0%)
-----


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.


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
Moli
post 13.06.2009, 23:02:12
Post #13





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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ł.

Ten post edytował Moli 13.06.2009, 23:02:47
Go to the top of the page
+Quote Post
kbsucha
post 13.06.2009, 23:21:47
Post #14





Grupa: Zarejestrowani
Postów: 113
Pomógł: 19
Dołączył: 2.08.2007

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
Pr0100
post 14.06.2009, 00:00:53
Post #15





Grupa: Zarejestrowani
Postów: 114
Pomógł: 24
Dołączył: 18.01.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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

Ten post edytował Pr0100 14.06.2009, 00:03:01


--------------------
Go to the top of the page
+Quote Post
morpheouss
post 14.06.2009, 18:18:13
Post #16





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.04.2009

Ostrzeżenie: (0%)
-----


dzieki wielkie
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 12:27