Cytat
Jak zauważyłeś, stworzyłem ten framework głównie dla siebie, aby łatwo tworzyć nowe projekty.
Tez tak kiedys myslalem, tez kiedys stworzylem swoj wlasny zajebisty i mega szybki framework. Napisalem na nim nawet pare projektow i bylem zajebiscie dumny.... Jakby mi teraz ktos kazal znowu zaczac w tym pisac to bym sie chyba zastrzelil. To byla tylko strata czasu. W to miejsc trzeba bylo sie uczyc znanych FWs.
Taki wlasny FW raz ze jest mega ubowi, dwa ze jak niedaj boze ktos bedzie chcial cos z toba robic to musi sie tego nauczyc, a dwa ze jak bedziesz chcial pojsc do pracy i pracowac z innymi devami to bedziesz sie musial uczyc tego co juz dawno znac powinienes.
Wiec jak juz bardzo chcesz cos takieg pisac, to tylko w ramach nauki/eksperymentow. Niestety zostajeszz w tyle uzywajac tego.
Co do kodu: to brawa ze jedziesz na najnowszym php (choc chyba nie do konca skoro nie korzystasz z "private readonly" w konstuktorze), kod jest w miare czytelny. W miare dobrze sie to czyta.
Zas co do krytyli (pomijajac to co juz napisano)
1) Takie cosiki
$array = $mainPageService->mainPageAction(....);
return $array;
Sie poprostu robi tak:
return $mainPageService->mainPageAction(....);
Dodatkowa zmienna jest tu zbedna
2) Moze przegapilem, ale nie widze by dla strony mozna bylo wybrac inny szablon niz tylko main. Nie mowie o srodku strony, tylko o calym szablonie na cala strone
3) Brakuje mi w konstruktorze kontrolera by dzieidziczyl po jakims abstrakcyjnym kontrolerze ktory by dodawal na dzien dobry stala funkcjonalnosc
4) Tworzenie w kazdej akcji kontrolera tego non stop
$html = new Html();
$csrfToken = new Token();
jest troche nieteges. Ciagla duplikacja tego samego kodu
6) Osobiscie strasznie nie lubie zbednych zagniezdzen np
public function prepareError(?array $array): string
{
$error = '';
if (is_array($array)) {
foreach ($array as $key => $value) {
$error .= htmlspecialchars($value) . '<br>';
}
$error .= "\n";
}
return $error;
}
powinno wygladac tak
public function prepareError(?array $array): string
{
if (!is_array($array)) {
return '';
}
$error = '';
foreach ($array as $key => $value) {
$error .= htmlspecialchars($value) . '<br>';
}
$error .= "\n";
return $error;
}
Dodatkowo wymuszasz tu jak ma wygladac struktura html bledu. A co jesli bym chcial miec UL LI zamiast BR ?
W przypadku braku bledu to powinno poza tym zwracac NULL a nie pusty text.
W innych miejscach dodajac error, laczysz je w string z nowa linia, potem robisz explode po nowej linii by zwrocic ARRAY... NIe lepiej od razu poprostu trzymac to w array? Taka robota do niczego , juz nie wspomne jak ktos bedzie chcial dodac wlasny error z nowa linia w srodku.
7) W Query nie bardzo kumam tej logiki
public function setParameter(string $search, $replace): self
{
if ($replace === false) {
$replace = '0';
}
jak replace false, to zmien na 0.
8)
public function dbFetchArray($result): ?array
{
return mysqli_fetch_assoc($result);
}
fetch_assoc moze zworic false, twoj kod tego nie uwzglednia i normalnie w swiecie sie wywali w takim przypadku
9) Brakuje interfejsow by ta funkcjonalnosc byla troche bardziej rozszerzalna a nie taka sztywna struktura
10 Brak testow
Wiecej juz mi sie nie chce patrzec

Generalnie jak mowilem, fajnie ze probujesz, ale to powinno byc tylko w ramach praktyki/testow. No chyba ze jestes juz super specem od Symfony czy czegos innego. Tylko jesli tak, to czemu nie uzywac tego (symfony)? Rownie szybko sie pisze - jak nie szybciej.