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
|
|
|
9.01.2024, 13:01:28
Post
#2
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
Cytat Z jednej strony nalegasz na super dobrze, a z drugiej strony piszesz metode ktora zwraca albo ID albo komunikat bledu... Kod znajdujący się w folderze /library/dbmframework/ oraz bezpośrednio z nim powiązany nalegam, aby napisać super dobrze. Metoda o której piszesz bardziej jest związana z wersją demo (cms), nie jest jakaś super kluczowa, to tylko demo, jak coś będzie tu zakombinowane w stylu 2w1 - no problem. Element demo cms - na luzie. Jak to wytłumaczyć, może spójrz na to w ten sposób, że przy kolejnym projekcie opartym o dbmframework folder /application/ będzie pusty, wszystko co jest w tym folderze będzie od nowa tworzone w nowej wersji (nie cms). P.S. Przykładowo mam skrypt płatności, który napisałem 10 lat temu, przydałoby się go napisać od nowa i chciałbym oprzeć projekt od library ->dbmframework. Czy teraz kaman? Kaman beauty Uparłeś się na Singleton, więc zacząłem pisać pod ten Singleton: Kod class DatabaseClass // implements SingletonInterface - * Przyszły mi tu na myśl interfejsy, fajnie byłoby dodać takie do aplikacji np. w /library/dbmframework/interfaces/ pytanie jak tworzyć interfejsy, które później można fajne wstrzykiwać np. do konstruktora itp. itd. { private static $instance = null; // static - po dodaniu pierwszego elementu dla Singletona zaczyna się już jakaś katastrofa !? private $connect; private $statement; //private function __construct() // po zmianie na private - wysypie się public function __construct() { try { $dbDSN = "mysql:host=" . DB_HOST . ";dbname=" . DB_DATABASE; $dbOptions = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", ]; $this->connect = new PDO($dbDSN, DB_USER, DB_PASSWORD, $dbOptions); } catch (PDOException $exception) { throw new DbmException($exception->getMessage(), $exception->getCode()); } } public static function getInstance() //: Result ? { if (!self::$instance) { self::$instance = new DatabaseClass(); } return self::$instance; } public function getConnection() //: Result ? { return $this->connect; } } Przy Singleton o ile widzę tworzymy tu zmienne globalne - to nie może tak być, okropnie wygląda, nie róbmy tego. Modele, o których piszesz jak widzę i tak muszą zostać poprawione (przerobione), coś nie sposób w nich wstawić chociażby konstruktora. Kod class BlogModel extends DatabaseClass // TODO! Remove extends DatabaseClass { /* TODO! private $database; public function __construct(DatabaseClass $database) { $this->database = $database; } */ .. } W kontrolerach jest podobnie lipa, brak możliwości wstrzykiwania do konstruktora Kod class IndexController extends FrameworkClass { private $blogModel; private $translation; /* * TODO! public function __construct(TranslationClass $translation) */ public function __construct() { $this->blogModel = $this->model('BlogModel'); // TODO! Zmienic sposob ladowania ClassModel ?! $translation = new TranslationClass(); $this->translation = $translation; } ... } gdzie np. w Symfony jest AbstractController i można do konstruktora wstrzykiwać co dusza zapragnie - super. Prośba, nalegam zróbmy Dependency Injection. Dzięki za poprawki i komentarze w queryExecute(). Przy if ($this->rowCount() == 0) {} miałem mieszane wrażenia, zawsze bardziej pasowało mi tu if ($this->rowCount() > 0) {} ale bez zagnieżdżeń jest lepiej. W przesłanym przykładzie akurat bez dwóch zdań po co te Ify teraz jest dobrze Ten post edytował Malinaa 9.01.2024, 13:25:44 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
Wersja Lo-Fi | Aktualny czas: 23.09.2024 - 20:48 |