Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%)
|
Od 2015 r. uczę się programować obiektowo w PHP. Przez ten czas napisałem kilka własnych aplikacji. Ostatnią pod koniec 2024 r. Gdy ją skończyłem, doszedłem do wniosku, iż na jej podstawie mogę utworzyć własny PHP Framework. Stworzyłem go w dwa dni i jest bardzo prosto napisany. Tak prosto, że trochę wstydzę się go pokazywać do oceny. Nadaje się do tworzenia ultra lekkich stron i prostych Systemów Zarządzania Treścią. Wszystkie najważniejsze pliki znajdują się w "src/Core". Framework jest oparty na architekturze SOA (architektura zorientowana na usługi). Budowa systemu katalogów przypomina Symfony, na którym się wzorowałem. Bez problemu da się w nim instalować biblioteki przy użyciu Composer'a. Prosiłbym o ocenę... (IMG:style_emoticons/default/smile.gif)
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%)
|
Przysiadłem wczoraj, aby zacząć to poprawiać. I mam pierwszą wątpliwość:
4) Tworzenie w kazdej akcji kontrolera tego non stop $html = new Html(); $csrfToken = new Token(); jest troche nieteges. Ciagla duplikacja tego samego kodu Rozwiązałem to przez stworzenie obiektów wszystkich klas pomocniczych Core'a w abstrakcyjnej klasie Controller. Wygląda to tak: Kod [...] abstract class Controller { protected Config $config; protected Cache $cache; protected Data $data; protected Key $key; protected Email $email; protected Html $html; protected Token $csrfToken; protected Database $database; protected Manager $manager; public function __construct() { $this->config = new Config(); $this->cache = new Cache(); $this->data = new Data(); $this->key = new Key(); $this->email = new Email(); $this->html = new Html(); $this->csrfToken = new Token(); } [...] Może tak zostać? Nie będę musiał tworzyć obiektów dla wszystkich kontrolerów, które ten rozszerzają, po wielokroć. (IMG:style_emoticons/default/smile.gif) PS Na razie operuję jeszcze na PHP 8.0, ale to zmienię... (IMG:style_emoticons/default/wink.gif) 2025.02.18: Chcę dopytać o kilka rzeczy... Cytat(phpion) - klasa Cache nie uwzględnia terminu ważności cache, jak już zostanie utworzone to na wieki wieków amen, Może być w kontrolerze tak, jak podałem poniżej? Bądź lepiej dodać metodę sprawdzającą to do klasy Cache? Kod if ( !file_exists($cacheFile) || filemtime($cacheFile) <= time() - $cacheTime ) { [...] $this->cache->cachePage($cacheFile, $content); } Cytat(phpion) - klasa Data - wiesz, że str_replace przyjmuje jako argumenty również tablicę podmianek? Mam z tym problem. Bo pewne wartości powinny być zmieniane w odpowiedniej kolejności. Jeśli zastosuję tablice w str_replace, to może np. podmienić mi & przed &. Część jest zamieniana na '', a część na '-' i kolejność jest ważna, więc nie wiem... (IMG:style_emoticons/default/smile.gif) Cytat(phpion) - Token - zupełnie niepotrzebnie uzależniasz działanie tej klasy od sesji, Chyba źle nazwałem tę klasę... Bo to nie jest jakiś tam "token", lecz "csrf token" do sprawdzania, czy nie doszło do nieprawidłowości/nadużyć przy przesyłaniu formularza. Umieszcza token w sesji i przekazuje do formularza. Potem sprawdza, czy przesłany formularz ma właściwy token, który wcześniej zapisano w sesji. Mam nadzieję, że zostałem zrozumiany. Może tak być? Cytat(phpion) - Validator - patrząc na metody to ma niewiele wspólnego z walidacją danych. Powróciłem do dawnej nazwy tej klasy, czyli jest to klasa "Error", która jest rozszerzana przez klasy CośTamValidator'ów. (IMG:style_emoticons/default/smile.gif) Bezpośredni link do repozytorium: https://github.com/EEQSOFT/framework.eeq Cytat(nospor) 9) Brakuje interfejsow by ta funkcjonalnosc byla troche bardziej rozszerzalna a nie taka sztywna struktura Mój problem jest taki, że za bardzo nie wiem, gdzie te interfejsy powinienem użyć. (IMG:style_emoticons/default/biggrin.gif) Cytat(nospor) 10 Brak testow Testy to wymóg konieczny? Nie może być aplikacja bez testów? (IMG:style_emoticons/default/smile.gif) Ten post edytował eerie 18.02.2025, 18:44:40 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 20.02.2025 Ostrzeżenie: (0%)
|
Przysiadłem wczoraj, aby zacząć to poprawiać. I mam pierwszą wątpliwość: Rozwiązałem to przez stworzenie obiektów wszystkich klas pomocniczych Core'a w abstrakcyjnej klasie Controller. Wygląda to tak: Kod [...] abstract class Controller { protected Config $config; protected Cache $cache; protected Data $data; protected Key $key; protected Email $email; protected Html $html; protected Token $csrfToken; protected Database $database; protected Manager $manager; public function __construct() { $this->config = new Config(); $this->cache = new Cache(); $this->data = new Data(); $this->key = new Key(); $this->email = new Email(); $this->html = new Html(); $this->csrfToken = new Token(); } [...] Może tak zostać? Nie będę musiał tworzyć obiektów dla wszystkich kontrolerów, które ten rozszerzają, po wielokroć. (IMG:style_emoticons/default/smile.gif) PS Na razie operuję jeszcze na PHP 8.0, ale to zmienię... (IMG:style_emoticons/default/wink.gif) 2025.02.18: Chcę dopytać o kilka rzeczy... Może być w kontrolerze tak, jak podałem poniżej? Bądź lepiej dodać metodę sprawdzającą to do klasy Cache? Kod if ( !file_exists($cacheFile) || filemtime($cacheFile) <= time() - $cacheTime ) { [...] $this->cache->cachePage($cacheFile, $content); } Mam z tym problem. Bo pewne wartości powinny być zmieniane w odpowiedniej kolejności. Jeśli zastosuję tablice w str_replace, to może np. podmienić mi & przed &. Część jest zamieniana na '', a część na '-' i kolejność jest ważna, więc nie wiem... (IMG:style_emoticons/default/smile.gif) Chyba źle nazwałem tę klasę... Bo to nie jest jakiś tam "token", lecz "csrf token" do sprawdzania, czy nie doszło do nieprawidłowości/nadużyć przy przesyłaniu formularza. Umieszcza token w sesji i przekazuje do formularza. Potem sprawdza, czy przesłany formularz ma właściwy token, który wcześniej zapisano w sesji. Mam nadzieję, że zostałem zrozumiany. Może tak być? Powróciłem do dawnej nazwy tej klasy, czyli jest to klasa "Error", która jest rozszerzana przez klasy CośTamValidator'ów. (IMG:style_emoticons/default/smile.gif) Bezpośredni link do repozytorium: https://github.com/EEQSOFT/framework.eeq Mój problem jest taki, że za bardzo nie wiem, gdzie te interfejsy powinienem użyć. (IMG:style_emoticons/default/biggrin.gif) Testy to wymóg konieczny? Nie może być aplikacja bez testów? (IMG:style_emoticons/default/smile.gif) Może być, ale wtedy użytkownicy staną się testerami tylko że za darmo i bez gwarancji, że coś faktycznie naprawisz, zanim zaczną narzekać. Testy to jak sprawdzenie, czy spadochron się otworzy, zanim skoczysz niby można bez, ale ryzyko jest spore. |
|
|
|
eerie Prosty i ultra lekki PHP Framework 21.01.2025, 16:04:11
phpion Ogólnie fajnie, że Ci się chciało tworzyć coś włas... 22.01.2025, 17:21:57
eerie Jak zauważyłeś, stworzyłem ten framework głównie d... 23.01.2025, 13:24:08
nospor CytatJak zauważyłeś, stworzyłem ten framework głów... 23.01.2025, 15:47:12
eerie Symfony ma całą masę plików i bardzo długo się pre... 23.01.2025, 17:38:23
nospor Cytati bardzo długo się prekompiluje.
Co masz na m... 23.01.2025, 17:51:47
Tomplus W ogóle, dlaczego nie używasz composera?
DLa włas... 23.01.2025, 18:03:33
nospor CytatMój problem jest taki, że za bardzo nie wiem,... 19.02.2025, 10:29:22
eerie CytatMoże być, ale wtedy użytkownicy staną się tes... 24.06.2025, 20:54:23
Tomplus @eerie
Tak po za projektem.
Aby mieć tutaj na for... 26.06.2025, 21:58:28
eerie Dobra uwaga. Sprawdzę... Dzięki wszystkim za pomoc... 27.06.2025, 11:19:05 ![]() ![]() |
|
Aktualny czas: 6.11.2025 - 17:18 |