Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> DbM Framework - Autorska aplikacja frameworka opartego na wzorcu MVC
Malinaa
post 20.12.2023, 21:40:29
Post #1





Grupa: Zarejestrowani
Postów: 543
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Malinaa
post 28.12.2023, 16:04:08
Post #2





Grupa: Zarejestrowani
Postów: 543
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 21.12.2023, 09:42:45 ) *
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
Go to the top of the page
+Quote Post

Posty w temacie
- 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
- - Malinaa   Cytat(nospor @ 21.12.2023, 09:42:45 )...   28.12.2023, 16:04:08
- - 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


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 9.06.2024 - 21:44