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
|
|
|
20.03.2024, 20:59:12
Post
#2
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
Metoda trans() w którym pliku/klasie?
W class Translation został dopisany konstruktor i wygląda Ok public function __construct() { $this->translation = $this->translation(); } Patrzę do class TemplateFeature - tutaj jest nie zmienione, ale sytuacja się komplikuje, ponieważ tu wszystko jest public dla szablonów i nie wstrzyknę metod z class Translation -> private - będzie konflikt Co zrobić, aby metod z class Translation -> translation() móc używać też w class TemplateFeature w obu klasach i nie powtarzać kodu. Spróbowałem wstrzyknąć na różne sposoby, ale ciągle coś wyskakuje że musi być public? Dla przykładu daję kod z metody do konstruktora Kod class TemplateFeature { public $translation; public function __construct() { $cookieName = 'DbmLanguage'; $languageDefault = 'pl'; $arrayLanguages = explode('|', APP_LANGUAGES); !empty($arrayLanguages[0]) ? $language = $arrayLanguages[0] : $language = $languageDefault; if (!empty($_GET['lang'])) { $language = $_GET['lang']; if (strtolower($language) === 'off') { $language = $languageDefault; } } elseif (isset($_COOKIE[$cookieName])) { $language = $_COOKIE[$cookieName]; } $pathTranslation = BASE_DIRECTORY . "translations/language." . strtolower($language) . ".php"; if (file_exists($pathTranslation)) { $this->translation = include($pathTranslation); } } } ... public function trans(string $key, array $overwrite = [], array $sprint = null): string { if (!empty($this->translation)) { $translation = $this->translation; .... } } otrzymuję komunikat: Fatal error: Access level to App\Controller\IndexController::$translation must be public (as in class Dbm\Classes\BaseController) in IndexController.php on line 18 Nie chciałbym teraz dla tego $translation zmieniać wszystkie kontrolery private na public Zmieniam w klasie public $translation; na public $publicTranslation; komunikat znika, oki, ale nie wczytuje tablicy if (!empty($this->publicTranslation)) jest empty, ścieżka ok itp. coś blokuje odczytanie tablicy? - - - Zmieniłem jednak kontrolery i parę rzeczy: https://github.com/artimman/dbmframework/co...8979ae418856695 Metoda poprawiona - wygląda Ok? I mniej kodu w kontrolerach, czyli też Ok. Ten post edytował Malinaa 20.03.2024, 21:04:10 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
Wersja Lo-Fi | Aktualny czas: 24.09.2024 - 17:59 |