Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 578 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%)
|
Witajcie,
miałem chwilę i usiadłem do autorskiego frameworka opartego na wzorcu MVC. Chciałbym go dopracować, utworzyć wersje stabilną. Kod frameworka jest dostępny pod adresem: https://github.com/artimman/dbmframework Zakończyłem pierwszy test aplikacji na serwerze zdalnym - powodzeniem. Wydaje się, że już jest całkiem Ok i ciekawe, czy ktoś się ze mną zgodzi? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
Ja osobiście rozumiem dlaczego ktoś tworzy i stosuje własne FW. Mają kilka zalet: - na początku są proste w obsłudze - są lekkie - uwzględniają specyfikę hostingu - są szyte na miarę umiejętności twórcy. Jednak problemy przychodzą gdy, projekt się rozrasta i różnych powiązań modułów jest coraz więcej. Zaczynają pojawiać się zbędne powtórzenia, blędy tam gdzie nie powinno ich być. No i to jest pierwszy i podstawowy błąd, kiedyś kiedy środowisko PHP raczkowało powstawało wiele potworków, która były systemami Legancy już na samym starcie projektu, potem projekt coraz bardziej się rozrastał i zainwestowanych środków nikt już nikomu nie zwróci, wiec utrzymuje się takie twory po dziś, ale w 2024 roku powinno nie być już zrozumienia dla takich praktyk. Sam tak jak pisałem wyżej wiele lat temu tworzyłem własne bo mi się jak każdemu wydawało że prosty projekt to poco zatrudniać taka kobyle jak pełnoprawny FW, ale czasy mamy inne i FW też pozwalają na to by dla mikroporjektów odpalać je i nie jest to taki już ogromny narzut jak kiedyś, dlatego uśmiercono już Silexa czy Lumena, bo Symfony czy Laravel potrafią je w pełni zastąpić. A największym problemem tego było to co napisałeś: "są szyte na miarę umiejętności twórcy.", w zeszył roku przez pewien czas przyszło mi pracować z takim systemem, jego poziom rozwoju zatrzymał się na PHP 5.4, a na starcie wszystkie błędy musiały być tam filtrowane bo było ponad 500 błędów o tym, że używana jest metoda klasy jako statyczna metoda, nie było szans na podbicie nawet do 5.5, bez przepisania połowy tego kodu, pomijając to że jest tak napisany ze nawet rector by sobie z tym nie poradził, w planach miało być przejście na PHP 5.6 a potem 7, ale jak wiadomo nowe funkcjonalności wygrały z naprawa tego co przez lata tam napsuto. Dlatego nie róbmy sobie krzywdy tworząc takie fw dla ideii, jeśli chcemy poznać jak coś działa to kod jest open source można przejrzeć źródła i testy i nawet jak nadal uparcie chcemy coś pisać to trzeba już mieć doświadczenie tka jak ktoś już tutaj wcześniej o tym wspominał. Cytat Malinaa musisz sobie postawić zasadnicze pytanie poco to tworzysz? Pan Bóg stworzył istotę dla hecy, z tyłu plecy, z przodu plecy. A jednak po niej przyszedł ten, który był zrodzony, a nie stworzony (IMG:style_emoticons/default/smile.gif) Chcesz pomóc? Napisz jak mam zakodować DI i inne drobiazgi, o których pisałem wyżej. Chcę pomoc ale kompletnie nie zrozumiałeś przekazu, wysłałem Ci wartościowy materiał https://symfony.com/doc/current/create_framework/index.html do którego nie zajrzałeś nawet. Uparłeś się żeby stworzyć FW bez composera, co w 2024 jest już niedopuszczalne w żadnym greenfield`zie. Kiedy w końcu PHP dojrzało do pewnych standardów które w Javie, czy C# mamy od lat i za których brak PHP przez lata był hejtowany, ty robisz wszytko by nadal powielać wszystkie złe praktyki jakie przez lata w tym języku stosowano. Wysiałem tobie również https://phptherightway.com/ tutaj również nie zajrzałeś, tam masz odpowiedzi chociażby na pytanie jak wdrożyć DI https://phptherightway.com/#dependency_injection Skoro chcesz poznać jak to działa to o tym poczytaj, nie oczekuj że podam Ci coś na tacy bo wtedy nie poznasz jak to działa, ale jak chcesz naprawdę czegoś się nauczyć z tworzenia tego FW to zanim zaczniesz pisać kod musisz zglebić te zagadnienia i przed wszystkim słuchać rad innych, którzy też kiedyś to poznawali tak jak Ty, nikt się nie budzi z tą wiedzą, zobacz przez ile postów z nospor pisałeś o tym jak wdrożyć DI, a wynikało to z tego że nie wiedziałeś czym jest ten wzorzec, wiec tego nie potrafiłeś przełożyć na kod. Jeśli chcesz naprawdę do czegoś w tym FW dojść to musisz bardzo dużo poczytać o tym, a dopiero potem próbować to przełożyć na kod, my siadamy do kodu bo już znamy pojecie DI itp, ty je poznajesz wiec to normalne że nie widzisz tego jeszcze w kodzie, ale jakbyś miał już teorie za sobą to byś to tak samo widział jak my (IMG:style_emoticons/default/smile.gif) Patrzysz na to że Wordpress nie ma composera, co oczywiście jest prawdą ale on powstał w 2004 roku, tam ten kod jest tak stary że jak powstawał było jeszcze PHP 4.X, potem 5.0, stąd ma wiele rzeczy których by w 2024 roku nie zastosowano, zaczynając od konwencji nazewnictwa klas i metod, braku composera w oficjalnym core i wsparcia dla PSR, ale ten kod ma 20 lat, nikt czegoś co przez 20 lat szczególnie w ramach open source nie przepisze na obecne standardy, będzie to utrzymywane w tej formie do końca jego istnienia, ale przez to własnie PHP jest tak bardzo nienawidzony, za Wordpressa bo nadal ludzie myślą że PHP wygląda tak jak Wordpress, ale jak ten system blogowy zasila jakieś 60% internetu to nie ma możliwości tak drastycznych zmian, bo tam musi być zachowana kompatybilność by 60% internetu się nie wysypało, ale to nie znaczy, że jesteśmy zmuszeni do tego by dalej tak pisać w Wordpressie, bo nie jesteśmy możemy użyć https://roots.io/bedrock/ i mieć kod na miarę 2024 roku i musisz to kolego zrozumieć, że nie jesteśmy już w 2004 roku, nie ma miejsca na tworzenie tego w ten sposób jeśli faktycznie chcesz się czegoś nauczyć i kiedyś nam za to podziękujesz że nie szedłeś tą ślepą drogą (IMG:style_emoticons/default/smile.gif) Jak zaczniesz pisać to tak jak na 2024 rok przystało wtedy bardzo chętnie zrobię Ci Review kodu (IMG:style_emoticons/default/smile.gif) Swoją drogą już Ci pisałem MVC to tylko pewna konwencja(https://www.youtube.com/watch?v=pJSoS4VBIW4&themeRefresh=1 poza tym obejrzyj sobie to), nie da się jej zaadaptować do WEB, to zawsze będzie jakaś wariacja wokół tego i nie ma problemu by katalog z templatkami nazywał się templates, a jak robisz templatki w czystym PHP/HTML to jak najbardziej dobrym rozszerzeniem dla tego jest phtml, to już taki standard(wprawdzie już raczej się nie używa tylko systemów jak twig ale w teorii można)
Swoją droga nie można tego nawet uruchomić bo na sztywno zaszyłeś w metodzie dispatch w 37 lini klasy Router
i nie można było tego odpalić na jakiś vhoscie, to powinno być opcjonalne albo konfigurowalne. Fajne logo takie trochę kradzione od JetBrains (IMG:style_emoticons/default/wink.gif) Ok, po zmianie został jeszcze routing, takie sobie linki SEO friendly wymyśliłem, np.: /praesent-euismod-gravida-libero-a-luctus-nisi-fermentum-nec,art,5.html że nie ma lekko z tym routingiem. To nie jest akurat SEO friendly https://www.seroundtable.com/google-commas-...tion-32741.html (IMG:style_emoticons/default/smile.gif) Prosze tutaj obsługa routingu(żeby nie było że nie chcę pomoc) Klasa Router
Plik routes.php
W pliku routes musiałem poprawić route dla artykułow bo pattern się nie zgadzał z regułami rewrite oraz linkami na stronie
Mała zamiana do obsługi stron typu the-best-offer,offer.html
oraz matchRoute by nie łapało niepotrzebnie /link.html jako pattern /{#}.html wtedy kiedy nie powinno (IMG:style_emoticons/default/wink.gif) poza tym powinno być raczej 1,user.html a nie user,1.html skoro już taka konwencje przyjąłeś w offer (IMG:style_emoticons/default/smile.gif) ale jak tak ma być jak masz to wtedy jeszcze taka zmiana
i w routes.php
Oczyścicie musisz poprawić UserController według nowej konwencji z DI Popraw tez linki bo potem musisz mieć powielone reguły bo raz są z blog raz bez, zależy gdzie klikniesz:
Jeszcze małą zmiana by każdy pattern był obsługiwany
oraz dispatch dla pn takiej reguły
Ten post edytował com 7.02.2024, 11:49:05 |
|
|
|
Malinaa DbM Framework - Autorska aplikacja frameworka opartego na wzorcu MVC 20.12.2023, 21:40:29
nospor ok, to na plus:
+ znajomosc jako tako klas
+ uzywa... 21.12.2023, 09:42:45
Malinaa Dzięki bardzo za sprawdzenie kodu.
Narzędzia były... 21.12.2023, 11:36:53
nospor phpstan sprawdza innego rodzaju rzeczy wiec poleca... 21.12.2023, 11:52:58
Malinaa KodNa tym to wlasnie polega a ty tego nie rozumies... 21.12.2023, 12:51:47
nospor A ,teraz kumam do czego piles piszac te "rado... 21.12.2023, 12:59:22
netir Jak zobaczyłem w model raw query bez bindowania to... 26.12.2023, 16:02:56
Malinaa Cytat(nospor @ 21.12.2023, 09:42:45 )... 28.12.2023, 16:04:08
nospor ad1) Nie widzi klasy App\Config\Constant... 29.12.2023, 22:02:12
Malinaa 1. Jak sprawić, aby widział klasę App\Config... 8.01.2024, 09:20:34
nospor ad1 Klasy maja byc widoczne w autoloading i wtedy ... 8.01.2024, 10:11:34
Malinaa 1. Klasa przeniesiona i widoczna - całość bez błęd... 8.01.2024, 13:28:12
nospor Cytatale to powinno być po prostu super dobrze.
Z ... 8.01.2024, 14:27:04
Malinaa CytatZ jednej strony nalegasz na super dobrze, a z... 9.01.2024, 13:01:28
nospor NIe wiem o co ci chodzi z zmiennymi globalnymi w S... 9.01.2024, 14:16:56
Malinaa Z protected static $connect to takie zakombin... 9.01.2024, 20:07:04
nospor CytatZ protected static $connect to takie zak... 10.01.2024, 09:55:45
viking https://github.com/artimman/dbmframework/bl...conf... 10.01.2024, 12:22:37
Malinaa Cytat(nospor @ 10.01.2024, 09:55:45 )... 11.01.2024, 11:55:06 
viking Cytat(Malinaa @ 11.01.2024, 11:55:06 ... 11.01.2024, 12:39:55
nospor CytatPodejście pragmatyczne w programowaniu, brzmi... 11.01.2024, 12:03:10
Malinaa Cytat(nospor @ 11.01.2024, 12:03:10 )... 11.01.2024, 12:36:08
Malinaa Cytat(viking @ 11.01.2024, 12:39:55 )... 11.01.2024, 13:19:54
viking Przeczytać przeczytałem ale napisałem dlaczego to ... 11.01.2024, 13:33:16
Malinaa Rozumiem, mimo to chciałbym opracować mechanizm (w... 11.01.2024, 14:01:52
viking To na początek ja bym spróbował ogarnąć temat z kt... 11.01.2024, 14:32:23
Malinaa Wydawało mi się, że takie powszechne rozwiązanie j... 11.01.2024, 22:42:39
com Malinaa musisz sobie postawić zasadnicze pytanie p... 18.01.2024, 14:49:35
Malinaa Cytat(viking @ 11.01.2024, 14:32:23 )... 18.01.2024, 21:38:13 
Salvation Cytat(Malinaa @ 18.01.2024, 21:38:13 ... 23.01.2024, 10:21:20
Tomplus Ja osobiście rozumiem dlaczego ktoś tworzy i stosu... 24.01.2024, 09:31:42
Malinaa Mam chwilę, więc usiadłem do projektu. Dependency ... 27.01.2024, 20:29:21
viking Kontroler to generalnie nie jest miejsce na wciska... 29.01.2024, 11:42:03
Malinaa Cytat(viking @ 29.01.2024, 11:42:03 )... 2.02.2024, 22:57:21
viking Musisz się w końcu zdecydować. Robisz to żeby się ... 3.02.2024, 15:34:29
Malinaa Cytat(viking @ 3.02.2024, 15:34:29 ) ... 3.02.2024, 21:54:10
viking Wstrzykiwanie zależności a menedżer (albo service ... 4.02.2024, 06:53:24
Malinaa Kilka konkretnych informacji się pojawiło. Dzięki.... 4.02.2024, 10:05:54
nospor skoro tak bardzo nie chcesz uzywac DI co ci zaprop... 4.02.2024, 20:07:12
Malinaa Cytat(nospor @ 4.02.2024, 20:07:12 ) ... 5.02.2024, 22:59:20
nospor Niby sluchasz co sie do ciebie mowi ale jednoczesn... 6.02.2024, 09:31:42
Malinaa Jeżeli słucham to jak mogę nie słuchać. Rozumiem, ... 6.02.2024, 10:37:49
nospor No masz dalej dodawac w dol te $database
... 6.02.2024, 11:14:14
Malinaa Dotąd już miałem
$router = new Router($d... 6.02.2024, 11:48:20
nospor zajebisty opis problemu: bo sie sypalo.. Jak masz ... 6.02.2024, 12:14:57
Malinaa Dobrze, że pokazałeś palcem, bo nie mogłem tego zn... 6.02.2024, 15:18:56
nospor Cytatale przy zaktualizowanym kodzie w index.php j... 6.02.2024, 15:26:07
Malinaa No, aż mi głupio, ale jeszcze nie mogę uwierzyć, ż... 6.02.2024, 16:22:25
nospor nie
aż dochodzę do modelu BlogModel
public functi... 6.02.2024, 16:29:49
Malinaa Po zmianie w __construct()
Message: Cannot use ... 6.02.2024, 16:57:05
nospor sorki, mialem na mysli kontrollery a nie model.
c... 6.02.2024, 17:22:18
Malinaa Aha, czyli dodać tylko linijkę:
parent::__construc... 6.02.2024, 18:50:18
nospor CytatOk, po zmianie został jeszcze routing, takie ... 7.02.2024, 10:47:34
Malinaa Cytat(nospor @ 7.02.2024, 10:47:34 ) ... 8.02.2024, 11:44:53
nospor CytatInterfejsy. No to od czego zaczniemy? smile.g... 8.02.2024, 12:24:30
com Cytat(Malinaa @ 8.02.2024, 11:44:53 )... 9.02.2024, 09:22:50
Malinaa Cytat(com @ 9.02.2024, 09:22:50 ) Nie... 9.02.2024, 11:38:31
com Cytat(Malinaa @ 9.02.2024, 11:38:31 )... 9.02.2024, 12:19:11
Malinaa Cytat(nospor @ 8.02.2024, 12:24:30 ) ... 12.02.2024, 00:27:30 
Salvation Cytat(Malinaa @ 12.02.2024, 00:27:30 ... 12.02.2024, 09:24:26
Malinaa Cytat(Salvation @ 12.02.2024, 09:24:2... 12.02.2024, 20:27:50 
Salvation Cytat(Malinaa @ 12.02.2024, 20:27:50 ... 13.02.2024, 11:34:58 
Salvation Cytat(Malinaa @ 13.02.2024, 20:46:10 ... 14.02.2024, 15:21:12
Malinaa Cytat(Salvation @ 13.02.2024, 11:34:5... 13.02.2024, 20:46:10
viking Zaczynając od php 8.0 wszystkie parametry required... 14.02.2024, 09:24:11
Malinaa Cytat(viking @ 14.02.2024, 09:24:11 )... 17.02.2024, 00:06:00
nospor CytatJak to zrobić, aby było ok dla szablonów, w k... 17.02.2024, 11:21:45
Malinaa Tak przerabialiśmy i wiem jak mógłbym to zrobić dl... 17.02.2024, 20:09:45
nospor Jak ty sobei lubisz komplikowac prace
I co z tego ... 18.02.2024, 09:13:36
Malinaa Tak jakoś mam, że i tu gdzie można by przyjąć, że ... 18.02.2024, 20:21:15
nospor CytatJeśli w funkcji dam DatabaseInterface $d... 18.02.2024, 21:30:08
Malinaa Używam, choć przyszedł mi na myśl inny system szab... 19.02.2024, 20:34:23
nospor ad2) bez znaczenia
Na pozostale dwa juz nie wiem... 20.02.2024, 09:57:23
Malinaa 2. Ok i super.
1. Ach, dasz radę. Ten template je... 20.02.2024, 22:34:50
nospor CytatNie jest tak jak piszesz, albo coś nie kumam.... 21.02.2024, 09:18:19
Malinaa Tak chcę, aby było bezbłędnie. Czy będzie perfekcy... 24.02.2024, 23:15:43
nospor CytatSprawdzam jak działa templates/base.phtml i y... 25.02.2024, 20:33:19
Malinaa Gadanie, kumasz. Chociaż szczęście każdy rozumie n... 26.02.2024, 00:48:26
nospor Cytatwyskakuje błąd
Juz ci kiedys pisalem co masz ... 26.02.2024, 09:32:34
Malinaa Pamięć dobra, ale krótka o czym kiedyś pisałeś co ... 28.02.2024, 18:51:51
nospor CytatSorki, że dopytuje o takie szczegóły jak PHP_... 29.02.2024, 12:03:02
Malinaa Użycie PHP_EOL w TemplateEngine
Kodfile_put_conte... 29.02.2024, 21:47:31
nospor Cytat$this->translation = json_encode(... 1.03.2024, 09:40:08
Malinaa Chyba spanikowałem, na szybkości dodałem json_enco... 1.03.2024, 10:53:30
nospor CytatNapisałeś "dane trzymaj w obiekcie... 1.03.2024, 10:57:07
Malinaa Przy sprzątaniu i optymalizacji natrafiłem na kod ... 16.03.2024, 22:40:47
nospor metoda trans nadal za kazdym razem gdy jest wywoly... 19.03.2024, 10:37:19
Malinaa Metoda trans() w którym pliku/klasie?
W class Tra... 20.03.2024, 20:59:12
nospor Tak, wlasnie o cos takiego mi chodzilo
public fun... 21.03.2024, 09:06:40
Malinaa Konstruktor, o który chodziło to już był.
Obiekt ... 21.03.2024, 11:21:16
nospor CytatKonstruktor, o który chodziło to już był.
Mi ... 21.03.2024, 11:55:00
Malinaa Ok, rozumiem o czym mówisz, kilka tygodni temu zos... 21.03.2024, 13:39:53
nospor CytatJeśli tak to nie rozumiem, dlaczego aż od ind... 21.03.2024, 17:03:33
Malinaa CytatGeneralnei chodzi o to by nie tworzyc tego sa... 27.03.2024, 15:09:11 ![]() ![]() |
|
Aktualny czas: 29.12.2025 - 14:25 |