![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 16.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam, wczoraj starałem się stworzyć swój pierwszy framework w PHP, lecz napotkałem kilka problemów. Z racji, że nie jestem profesjonalistą proszę o wyrozumiałość. Od razu chcę zaznaczyć, że jeśli ktoś chce napisać posta w stylu: "wyjdź z tym i idź się ucz symfony/cakephp" to proszę, aby się nie fatygował bo po prostu to zignoruje. Chce budować aplikacje na własnym silniku, który bardzo dobrze znam i mogę go dowolne rozbudować itp. Poza tym mam też inne powody, których nie będę tutaj opisywał. Chce po prostu używać swojego i tyle.
Zrobiłem go na takiej zasadzie: struktura folderów i plików:
Plik .htaccess - zadanie kierowania wszelkiego ruchu do index.php:
Plik index.php - załączenie frameworka z innego katalogu:
system/_init.php - główny plik frameworku:
system/Dispatcher.php - przetwarza ścieżkę wpisaną przez usera:
system/Model.php - plik pusty, jeszcze nic tam nie wrzuciłem. system/Database.php - sterownik bazy danych.
system/Autoloader.php - ładuje biblioteki z folderu:
lib/debugClass.php - liczy jak długo parseruje się dana klasa:
contollers/index/Controller.php - plik kontrolera index:
Prosiłbym o rady takie, które odpowiedzą mi na pewne pytania: - Czy dobrze zbudowałem cały framework? Coś powinienem zmienić? - Mam taki problem, że gdy chce np. wykonać akcje localhost/index/debug to dostaje błąd, że $debug nie jest obiektem. Wiem o tym, ale jak stworze go na nowo, to nie będzie miał już tej tablicy z danymi. Jak to rozmwiać? - Inne uwagi według własnego uznania mile widziane. Ten post edytował pajaa1981 16.01.2011, 17:35:14 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Czy dobrze zbudowałem cały framework? Coś powinienem zmienić? Fatalnie. Kompletny brak elastyczności, używanie przestarzałych mechanizmów, maskowanie błędów, kompletnie nielogiczny kod ("Debug" odpowiada za wczytywanie plików, wtf?), jakieś śmieci typu getMicrotime() - przyjrzyj się dokładniej funkcji microtime, nie przestrzegasz konwencji nazewnictwa, korzystasz z przestrzeni globalnej (jak rozpoczynasz teraz pisanie czegoś to PHP5.3 powinno być bazową platformą).Pisanie własnego frameworka jest uzasadnione chyba tylko w dwóch przypadkach: 1. Gdy piszesz go w celu edukacyjnym. 2. Gdy istniejące rozwiązania po prostu nie sprawdzą się w danym projekcie. I nie pisz o tym, że chcesz znać go dogłębnie, bo przestudiowanie źródeł istniejących projektów jest o wiele szybsze niż tworzenia wszystkiego od podstaw. I kto Ci broni rozbudowywać istniejące projekty? Poza tym niezależnie jaki będzie Twój powód dla stworzenia swojego rozwiązania trzeba najpierw porządnie poznać kilka innych projektów tego typu, zobaczyć jak działają, przekonać się jakie są ich mocne i słabe strony (by nie powielić tych samych błędów u siebie). Na chwile obecną to co prezentujesz nie nadaje się kompletnie do niczego. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 16.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
W takim razie co proponujesz? Dodam, że chodzi mi o framework, który nie będzie posiadał zbędnych funkcji. Potrzebuje czegoś pod tworzenie gier przeglądarkowych. Kupiłem książkę "Symfony aplikacje internetowe w praktyce", ale ta książka wydaje się przestarzała - Symfony od tego czasu się zmieniło i korzysta z Doctrine, a tam jest wszystko oparte o Propel. Jeśli znasz jakiś framework z którym poradzi sobie początkująca osoba taka jak ja, to bardzo proszę Cię o pomoc.
Ten post edytował pajaa1981 16.01.2011, 19:10:31 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze nie cytuj całych wypowiedzi, a już w szczególności gdy w dyskusji jest tylko jedna odpowiedź.
Cytat Dodam, że chodzi mi o framework, który nie będzie posiadał zbędnych funkcji. Co z tego, że będzie miał zbędne funkcje? Nie potrzebujesz czegoś to nie używasz tego, ewentualnie w przypadku jakiś większych "dodatków" (np. pluginy) nie ładujesz ich.Cytat Symfony od tego czasu się zmieniło i korzysta z Doctrine Symfony może co najwyżej wykorzystywać Doctrine, ale nic nie stoi na przeszkodzie byś korzystał z Propela czy innego ORM-a. Możesz nawet nie korzystać z żadnego.Cytat Jeśli znasz jakiś framework z którym poradzi sobie początkująca osoba taka jak ja, to bardzo proszę Cię o pomoc. Nie ma czegoś takiego jak FW dla osoby początkującej. Z wartych uwagi są właściwie tylko Symfony i ZendFramework (powinieneś się już brać za wersję drugą w obu przypadkach). Jest jeszcze kilka innych mniej znanych projektów na które można by zwrócić uwagę (np. Yii), ale te dwa dominują.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cytat Z wartych uwagi są właściwie tylko Symfony i ZendFramework (powinieneś się już brać za wersję drugą w obu przypadkach). Zend'a 2.0 długo jeszcze nie będzie widać, więc radzę wziąć się za 1.11.1, która jest ostatnią wersją z linii 1.X . Edit: Oczywiście że 1.11.1 ![]() Ten post edytował melkorm 16.01.2011, 19:34:17 -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
1.9.1? Ostatnio ściągałem 1.11.1, chyba, że coś mnie się przewidziało
![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Crozin ma dużo racji, a dodatkowo tak tylko z ciekawości...
Cytat RewriteRule (.*) index.php [L] Jak chcesz załączyć pliki graficzne, style i javascript? -------------------- scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 313 Pomógł: 24 Dołączył: 9.08.2008 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
małe odejście od tematu:
Zend'a 2.0 długo jeszcze nie będzie widać zf 2 jest już dostępny, fakt że nie jest to wersja stabilna ale lepiej coś pisać w wersji 2 ponieważ upgrate z 1.x do 2.x będzie praktycznie niemożliwy -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cytat zf 2 jest już dostępny Jest to raczej wersja mało edukacyjna bo żaden z głównych komponentów Zend'a (routing, modulara application, session, form i wiele innych) nie zostały przepisane i nie są jeszcze dostępne więc nauka tej wersji jest bezcelowa na tą chwilę, wersja która została wydana bodajże wprowadziła Namespaces i nie wiele więcej. -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
OK, zejdźcie z tematu ZF2 - trochę się z nim pośpieszyłem.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Co to jest? W tym momencie zablokowałeś sobie możliwość wykorzystania większości zewnętrznych bibliotek. Musisz się poduczyć najpierw samego PHP, ponieważ na razie wykorzystujesz jakiś mechanizm, a ani nie wiesz ani, jak powinien być używany, ani nawet jak właściwie działa. O poprawnym ładowaniu klas możesz poczytać np. tutaj: http://pl.wikibooks.org/wiki/PHP/Automatyczne_ładowanie -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 22:58 |