DbM Framework - Autorska aplikacja frameworka opartego na wzorcu MVC |
DbM Framework - Autorska aplikacja frameworka opartego na wzorcu MVC |
20.12.2023, 21:40:29
Post
#1
|
|
Grupa: Zarejestrowani Postów: 569 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? -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
28.12.2023, 16:04:08
Post
#2
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
1. w ogole na poczatek to zaprzyjaznij sie z takmi narzedziami jak : - php-cs-fixer - phpstan - inne 2. NIe wiem jak planujesz docelowo dostarczac swoj FW, ale na chwile obecna widze wrzuciles go fo VENDOR a ten katalog jest zastrzezony dla COMPOSER. wywal go wiec stamtad i wsadz nie wiem, np do LIBS. 3. No i jesli twoj kod uzywa np phpmailer, ktory jest zapisany w composer.json to nie zapisuj go w GIT. Katalog VENDOR generalnie w GIT ma sie nie znalezc w ogole. po to jest composer 4. plik config.php rowniez powinien nazywac sie np config.php.dist i dopiero ludzie kopiuja go sobie jako config.php lokalnie. Dlaczego? bo z kazdym updatem z twojego gita, ludzie straca swoje zmiany gdy to zostanie jak teraz 5. declare(strict_types=1); ma byc w kazdym pliku php a nie w co drugim 6. Potworki w stylu IF... 7. public function __construct() 8. public function querySql(string $sql, ?string $fetch = null): PDOStatement 9. public function requestData(string $fieldName) 10. public function setDataToDB($value) 11. public function userPermissions(int $user): string 12. public static function temp_htmlUser($sessionUserId, $module = null): void 13. W klasie DatabaseClass Ty tutaj znowu tworzyc nowy obiekt PDO, czyli nowe polaczenia. 14. public function getSection(int $id): object 15. public function userSigninCorrect(array $params, string $password): ?string 16. public const VALID_LOGIN = 'loginNotFound'; 1. a) php-cs-fixer - jest zainstalowany - pokazuje bez błędów b ) phpstan - doinstalowałem - pokazuje błąd Line Controller\IndexController.php ------ ------------------------------------------------------------------------------------ :45 Access to constant BLOG_INDEX_ITEM_LIMIT on an unknown class App\Config\Constants. 💡 Learn more at https://phpstan.org/user-guide/discovering-symbols ------ ---------------------------------------------------------------------------- nie wiem o co chodzi z tym błędem? c) inne - jakie to jeszcze inne narzędzia 2 i 3. FW dałem do katalogu library. Usunąłem vendor -> wykonałem composer update i się załadował nowy vendor, czyli powinno być Git (do przetestowania na zdalnym). Z katalogiem vendor jest pytanie. Nie jest potrzebny na Gicie, composer go tworzy - Ok, ale co kiedy kod jest w wersji CMS czyli dla zielonych, kiedy zostawię vendor uruchomią aplikacje bez problemu, ale jeśli usunę to nie wykonają polecenia composer i aplikacja nie zadziała. Nie odpalą composera tym bardziej na zdalnym serwerze, ba zwykle taki user nie ma na serwerze SSH, a na pewno nie wie po co to. Zostawiam vendor i problem z głowy, zadziała nawet bez SSH. 4. Dodałem config.php.dist teraz zastanawiam się, czy to coś dało kiedy po zmianie nazwy z config.php.dist na config.php Git i tak będzie widzieć taką zmianę itd. Tu raczej jakiś git ignore config.php trzeba by wstawić? 5. declare(strict_types=1); dopisałem, ale ma być w każdym pliku .php, chyba nie w tempates np. base.html.php ? 6. IFy, może np. tak: Kod public function getSections(): ?array { $query = "SELECT * FROM dbm_article_sections ORDER BY id ASC"; $this->queryExecute($query); if ($this->rowCount() > 0) { return $this->fetchAllObject(); } return null; } ponieważ według tego co napisałeś: Kod public function getSections(): ?array { $query = "SELECT * FROM dbm_article_sections ORDER BY id ASC"; $this->queryExecute($query); if ($this->rowCount() == 0) { return null; } return $this->fetchAllObject(); } z taką negacją na początku - jasne, że tak się robi, tylko w tym przypadku jakoś mi nie pasuje i nie wygląda najlepiej if count == 0 ? Tu zawsze było if count > 0 ! Jak powinna wyglądać więc ta metoda, tak aby było super git? 7. Nie wiem skąd ten return w konstruktorze - usunąłem. class DatabaseClass {} Konstruktor zmieniony, ale czy nie będzie bardziej poprawnie kiedy zamiast DB_HOST odznaczę private $dbHost = DB_HOST; itd. czy bez różnicy, tak i tak jest ok? Przypomniało mi się, że gdzieś czytałem o exec(); że należy do metod niebezpiecznych i nie raz jest wyłaaczone na serwerze, więc raczej lepiej napisać w wersji z $options = []; ? 8. Ten $fetch wolałbym zostawić, ponieważ przy rozbudowie to nie będzie boolean, można dodać tu więcej opcji niż dwie true/false. 9. public function requestData(string $fieldName) może jakiś pomysł jak poprawić, aby było na 100%? 10. public function setDataToDB($value) czyli do usunięcia. Czy to tak można zezwalać na zapisywanie wszystkiego do bazy danych co user wklepie w formularz? 11. public function userPermissions(int $user): string - tylko rola, więc komunikaty usuwam. 12. public static function temp_htmlUser($sessionUserId, $module = null): void Jest oznaczone "temp" czyli tymczasowe do napisania od nowa. Nie wiem jak wykonać tu połączenie z bazą danych w inny sposób, tzn. pojedyncze? 13. Nie za bardzo wiem jak poprawić całość na takie jedno połączenie z bazą danych? 14. Widzę, że return (object) [] to już kombinacja alpejska, ale if ($this->rowCount() == 0) { return null; } return $this->fetchObject(); też świetne nie będzie, czy można jeszcze inaczerj (świetnie)? 15. Ta funkcja nie sprawdza czy user zalogowany, a zwraca jesli wystąpi bład komunikat do formularza logowania, czyli jest tu potrzebny string. 16. Miało nazywać się VALIDATION_LOGIN walidacja loginu, ale skróciłem na VALID_LOGIN, zmienione na VALIDATION_LOGIN itd. Short -> full name - to kosmetyka, czy jest uciążliwe? Ten post edytował Malinaa 28.12.2023, 17:59:49 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
Wersja Lo-Fi | Aktualny czas: 24.09.2024 - 12:59 |