Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prosty i ultra lekki PHP Framework
eerie
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
eerie
post
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ść:

Cytat(nospor @ 23.01.2025, 15:47:12 ) *
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 &amp;. 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
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.11.2025 - 17:23