![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 544 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
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 544 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zaczynając od php 8.0 wszystkie parametry required muszą być zdefiniowane pierwsze. Nie inaczej required są pierwsze. W przykładzie ostanie false mogło być mylące, dokładnie całość w interfejsie chciałem dać tak: public function queryExecute(string $query, array $params, bool $reference): bool; gdzie tylko $query jest required (jeden pierwszy argument) ale wówczas np. w BlogModel.php Visual pokazuje chmurkę, że nie widzi wszystkich argumentów dlaczego wyskakuje chmurka - ponieważ w BlogModel.php jest construct z DatabaseInterface i po zmianie na siłę trzeba wrzucać w metodę false a chyba nie po to był pisany interfejs, aby w konstruktor wstrzykiwać klasę Database, albo w metodę nie wymagane false/true? Jak to napisał wcześniej Salvation. Cytat Jak zrobisz to w ten sposób co proponujesz... Zmieniłem na sposób, który zaproponowałeś, bo "tak się przyjęło"... i elegancko. Aplikacja działa; kłopot, że w Visualu świeci na czerwono. Kod jest dostępny. Jak nie ma kodu, to podaj kod, kiedy jest kod to nie można do niego zajrzeć? Coś tu nie rozumiem. Może lepiej podam kod krok po kroku, bo chyba można ten kod ze sobą "pogodzić". Klasa Database.php Kod public function queryExecute(string $query, ?array $params = [], bool $reference = false): bool { ... } Interfejs DatabaseInterface.php był tak samo jak w klasie, ale chcemy, aby był tak: Kod public function queryExecute(string $query, array $params, bool $reference): bool; { ... } i ok, zmieniam na powyższy - aplikacja działa, teoretycznie wszystko ok, ale przechodzę do modeli, np.: BlogModel.php -> Visual wyświetla chmurkę -> brakuje argumentów w metodzie queryExecute() I tutaj jest problem, no ale w konstruktorze miałem: public function __construct(DatabaseInterface $database) -> brak zgodności więc Visual świeci na czerwono, no dobrze, ale generalnie nie ma problemu zmieniam konstruktor na: Kod public function __construct(Database $database) { ... } i wszystko działa, w Visualu też wszystko jest na zielono, ok. Przy czym w kontrolerach np. BlogController.php w konstruktor wstrzykiwany jest interfejs Kod public function __construct(DatabaseInterface $database) { ... } Pytanie, czy tak jest dobrze, że mając interfejs w konstruktor modeli wstrzykuję klasę Database nie interfejs DatabaseInterface, ewentualnie jak prawidłowo pogodzić te klasy i metody z klasą Database i interfejsem DatabaseInterface? Tutaj coś nie wiem, które rozwiązanie jest dobre. Czy w modelach może tu być w konstruktorze Database zamiast DatabaseInterface, bo ta zamiana rozwiązuje problem wyświetlania przez Visual chmurki z info o brakujących argumentach metody. Chciałbym ogarnąć jeszcze miejsca w kodzie, gdzie zostało dodane TODO! I trafiam na taką funkcje, która to była jako tymczasowa dla szablonów i jest powiązana z Database, które jak widać z powyższego jeszcze szwankuje. plik template.php Kod // TODO! Temporary function use Dbm\Classes\Database; function temp_htmlUser($sessionUserId, $module = null, $tempPath = null): string { $database = new Database(); // TODO! ... } Jak to zrobić, aby było ok dla szablonów, w których chciałbym mieć tylko funkcje do obsługi szablonu, np. path() itp. gdzie temp_htmlUser() wymaga połączenia z bazą danych? Ten post edytował Malinaa 17.02.2024, 00:10:17 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2024 - 01:58 |