Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 578 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? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 578 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 |
|
|
|
Malinaa DbM Framework - Autorska aplikacja frameworka opartego na wzorcu MVC 20.12.2023, 21:40:29
nospor ok, to na plus:
+ znajomosc jako tako klas
+ uzywa... 21.12.2023, 09:42:45
Malinaa Dzięki bardzo za sprawdzenie kodu.
Narzędzia były... 21.12.2023, 11:36:53
nospor phpstan sprawdza innego rodzaju rzeczy wiec poleca... 21.12.2023, 11:52:58
Malinaa KodNa tym to wlasnie polega a ty tego nie rozumies... 21.12.2023, 12:51:47
nospor A ,teraz kumam do czego piles piszac te "rado... 21.12.2023, 12:59:22
netir Jak zobaczyłem w model raw query bez bindowania to... 26.12.2023, 16:02:56
nospor ad1) Nie widzi klasy App\Config\Constant... 29.12.2023, 22:02:12
Malinaa 1. Jak sprawić, aby widział klasę App\Config... 8.01.2024, 09:20:34
nospor ad1 Klasy maja byc widoczne w autoloading i wtedy ... 8.01.2024, 10:11:34
Malinaa 1. Klasa przeniesiona i widoczna - całość bez błęd... 8.01.2024, 13:28:12
nospor Cytatale to powinno być po prostu super dobrze.
Z ... 8.01.2024, 14:27:04
Malinaa CytatZ jednej strony nalegasz na super dobrze, a z... 9.01.2024, 13:01:28
nospor NIe wiem o co ci chodzi z zmiennymi globalnymi w S... 9.01.2024, 14:16:56
Malinaa Z protected static $connect to takie zakombin... 9.01.2024, 20:07:04
nospor CytatZ protected static $connect to takie zak... 10.01.2024, 09:55:45
viking https://github.com/artimman/dbmframework/bl...conf... 10.01.2024, 12:22:37
Malinaa Cytat(nospor @ 10.01.2024, 09:55:45 )... 11.01.2024, 11:55:06 
viking Cytat(Malinaa @ 11.01.2024, 11:55:06 ... 11.01.2024, 12:39:55
nospor CytatPodejście pragmatyczne w programowaniu, brzmi... 11.01.2024, 12:03:10
Malinaa Cytat(nospor @ 11.01.2024, 12:03:10 )... 11.01.2024, 12:36:08
Malinaa Cytat(viking @ 11.01.2024, 12:39:55 )... 11.01.2024, 13:19:54
viking Przeczytać przeczytałem ale napisałem dlaczego to ... 11.01.2024, 13:33:16
Malinaa Rozumiem, mimo to chciałbym opracować mechanizm (w... 11.01.2024, 14:01:52
viking To na początek ja bym spróbował ogarnąć temat z kt... 11.01.2024, 14:32:23
Malinaa Wydawało mi się, że takie powszechne rozwiązanie j... 11.01.2024, 22:42:39
com Malinaa musisz sobie postawić zasadnicze pytanie p... 18.01.2024, 14:49:35
Malinaa Cytat(viking @ 11.01.2024, 14:32:23 )... 18.01.2024, 21:38:13 
Salvation Cytat(Malinaa @ 18.01.2024, 21:38:13 ... 23.01.2024, 10:21:20
Tomplus Ja osobiście rozumiem dlaczego ktoś tworzy i stosu... 24.01.2024, 09:31:42
Malinaa Mam chwilę, więc usiadłem do projektu. Dependency ... 27.01.2024, 20:29:21
viking Kontroler to generalnie nie jest miejsce na wciska... 29.01.2024, 11:42:03
Malinaa Cytat(viking @ 29.01.2024, 11:42:03 )... 2.02.2024, 22:57:21
viking Musisz się w końcu zdecydować. Robisz to żeby się ... 3.02.2024, 15:34:29
Malinaa Cytat(viking @ 3.02.2024, 15:34:29 ) ... 3.02.2024, 21:54:10
viking Wstrzykiwanie zależności a menedżer (albo service ... 4.02.2024, 06:53:24
Malinaa Kilka konkretnych informacji się pojawiło. Dzięki.... 4.02.2024, 10:05:54
nospor skoro tak bardzo nie chcesz uzywac DI co ci zaprop... 4.02.2024, 20:07:12
Malinaa Cytat(nospor @ 4.02.2024, 20:07:12 ) ... 5.02.2024, 22:59:20
nospor Niby sluchasz co sie do ciebie mowi ale jednoczesn... 6.02.2024, 09:31:42
Malinaa Jeżeli słucham to jak mogę nie słuchać. Rozumiem, ... 6.02.2024, 10:37:49
nospor No masz dalej dodawac w dol te $database
... 6.02.2024, 11:14:14
Malinaa Dotąd już miałem
$router = new Router($d... 6.02.2024, 11:48:20
nospor zajebisty opis problemu: bo sie sypalo.. Jak masz ... 6.02.2024, 12:14:57
Malinaa Dobrze, że pokazałeś palcem, bo nie mogłem tego zn... 6.02.2024, 15:18:56
nospor Cytatale przy zaktualizowanym kodzie w index.php j... 6.02.2024, 15:26:07
Malinaa No, aż mi głupio, ale jeszcze nie mogę uwierzyć, ż... 6.02.2024, 16:22:25
nospor nie
aż dochodzę do modelu BlogModel
public functi... 6.02.2024, 16:29:49
Malinaa Po zmianie w __construct()
Message: Cannot use ... 6.02.2024, 16:57:05
nospor sorki, mialem na mysli kontrollery a nie model.
c... 6.02.2024, 17:22:18
Malinaa Aha, czyli dodać tylko linijkę:
parent::__construc... 6.02.2024, 18:50:18
nospor CytatOk, po zmianie został jeszcze routing, takie ... 7.02.2024, 10:47:34
com RE: DbM Framework - Autorska aplikacja frameworka opartego na wzorcu MVC 7.02.2024, 15:09:08
Malinaa Cytat(nospor @ 7.02.2024, 10:47:34 ) ... 8.02.2024, 11:44:53
nospor CytatInterfejsy. No to od czego zaczniemy? smile.g... 8.02.2024, 12:24:30
com Cytat(Malinaa @ 8.02.2024, 11:44:53 )... 9.02.2024, 09:22:50
Malinaa Cytat(com @ 9.02.2024, 09:22:50 ) Nie... 9.02.2024, 11:38:31
com Cytat(Malinaa @ 9.02.2024, 11:38:31 )... 9.02.2024, 12:19:11
Malinaa Cytat(nospor @ 8.02.2024, 12:24:30 ) ... 12.02.2024, 00:27:30 
Salvation Cytat(Malinaa @ 12.02.2024, 00:27:30 ... 12.02.2024, 09:24:26
Malinaa Cytat(Salvation @ 12.02.2024, 09:24:2... 12.02.2024, 20:27:50 
Salvation Cytat(Malinaa @ 12.02.2024, 20:27:50 ... 13.02.2024, 11:34:58 
Salvation Cytat(Malinaa @ 13.02.2024, 20:46:10 ... 14.02.2024, 15:21:12
Malinaa Cytat(Salvation @ 13.02.2024, 11:34:5... 13.02.2024, 20:46:10
viking Zaczynając od php 8.0 wszystkie parametry required... 14.02.2024, 09:24:11
Malinaa Cytat(viking @ 14.02.2024, 09:24:11 )... 17.02.2024, 00:06:00
nospor CytatJak to zrobić, aby było ok dla szablonów, w k... 17.02.2024, 11:21:45
Malinaa Tak przerabialiśmy i wiem jak mógłbym to zrobić dl... 17.02.2024, 20:09:45
nospor Jak ty sobei lubisz komplikowac prace
I co z tego ... 18.02.2024, 09:13:36
Malinaa Tak jakoś mam, że i tu gdzie można by przyjąć, że ... 18.02.2024, 20:21:15
nospor CytatJeśli w funkcji dam DatabaseInterface $d... 18.02.2024, 21:30:08
Malinaa Używam, choć przyszedł mi na myśl inny system szab... 19.02.2024, 20:34:23
nospor ad2) bez znaczenia
Na pozostale dwa juz nie wiem... 20.02.2024, 09:57:23
Malinaa 2. Ok i super.
1. Ach, dasz radę. Ten template je... 20.02.2024, 22:34:50
nospor CytatNie jest tak jak piszesz, albo coś nie kumam.... 21.02.2024, 09:18:19
Malinaa Tak chcę, aby było bezbłędnie. Czy będzie perfekcy... 24.02.2024, 23:15:43
nospor CytatSprawdzam jak działa templates/base.phtml i y... 25.02.2024, 20:33:19
Malinaa Gadanie, kumasz. Chociaż szczęście każdy rozumie n... 26.02.2024, 00:48:26
nospor Cytatwyskakuje błąd
Juz ci kiedys pisalem co masz ... 26.02.2024, 09:32:34
Malinaa Pamięć dobra, ale krótka o czym kiedyś pisałeś co ... 28.02.2024, 18:51:51
nospor CytatSorki, że dopytuje o takie szczegóły jak PHP_... 29.02.2024, 12:03:02
Malinaa Użycie PHP_EOL w TemplateEngine
Kodfile_put_conte... 29.02.2024, 21:47:31
nospor Cytat$this->translation = json_encode(... 1.03.2024, 09:40:08
Malinaa Chyba spanikowałem, na szybkości dodałem json_enco... 1.03.2024, 10:53:30
nospor CytatNapisałeś "dane trzymaj w obiekcie... 1.03.2024, 10:57:07
Malinaa Przy sprzątaniu i optymalizacji natrafiłem na kod ... 16.03.2024, 22:40:47
nospor metoda trans nadal za kazdym razem gdy jest wywoly... 19.03.2024, 10:37:19
Malinaa Metoda trans() w którym pliku/klasie?
W class Tra... 20.03.2024, 20:59:12
nospor Tak, wlasnie o cos takiego mi chodzilo
public fun... 21.03.2024, 09:06:40
Malinaa Konstruktor, o który chodziło to już był.
Obiekt ... 21.03.2024, 11:21:16
nospor CytatKonstruktor, o który chodziło to już był.
Mi ... 21.03.2024, 11:55:00
Malinaa Ok, rozumiem o czym mówisz, kilka tygodni temu zos... 21.03.2024, 13:39:53
nospor CytatJeśli tak to nie rozumiem, dlaczego aż od ind... 21.03.2024, 17:03:33
Malinaa CytatGeneralnei chodzi o to by nie tworzyc tego sa... 27.03.2024, 15:09:11 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 06:50 |