Zacznijmy więc!

Dframe

Dframe to Framework PHP który powstał na potrzeby małych stron jednak z czasem rozrósł się na tyle by spełniał potrzeby nawet wymagających projektów. Stworzony do szybkiego tworzenia stron posiada wiele przydatnych modułów takich jak:

  • obsługa zapytań bazy danych,
  • tokeny CSRF,
  • obsługa FileStorage,
  • biblioteki do obsługi wysyłki maili.

Głowne założenie to szybkość budowania aplikacji.
Projekt jest rozwijany przez grupę programistów oraz społecznośc GITHUB. Dframe jest kompatybilny z php 7.x.

start.min.jpg

Postawowa Struktura plików

Bootstrap.php - znajdują się globalny dostępne zmienne. Jest to podstawowa klasa która jest dostępna w całym projekcje i jest ładowana na starcie. Dostęp poprzez zmienną $this->baseClass. W przykładowym projecie znajduje się tu przedewyszystkim ładowanie sesji, tokenów i załadowanie bazy danych.

Config - folder zawiera pliki konfiguracyjne w postaci

return array(
    'klucz' -> 'Wartość',
    'innyKlucz' => 'Inna Wartość'
);

W naszym przypadku znaduje się jeszcze router.php gdyż przykładowa aplikacja używa Dframe\Router oraz folder view z plikiem smarty.php bo w przykładzie użyliśmy silnik S.M.A.R.T.Y jednak do renderowania html można użyć dowolnego systemu np: Twig, Mustache ewenualnie czysty php

Controller - kluczowym plikiem jest tutaj Controller.php Łączy on ze sobą Router i wymieniony wcześniej $this->baseClass

Uwaga!

  • Każde klasy które są w tym folderze muszą dziedziczyły tą klase bądź klase która się do niej odwołuje extention Controller\Controller
  • Zamiast __construct() używamy metody init() działa ona w takim sam sposób

View - folder ten odpowiada za warstwę widoku niedostępną bezpośrednio z adresu.

  • index.php można dowolnie modyfikować i dopisywać metody które będą dostępne w szablonie przykładem takiego dopisania może być np jakaś klasa autoryzacji. Używając $this->assign('auth', new auth()); W łatwy sposób można np określać wyświetlane treści. W templatce na przykładzie używanego silnika przestawia się sposób {if $auth->isLogin()} Treść Tylko dla zalogowanej osoby {/if}
  • config.php ogólna konfiguracja ewentualnie dostępy do debugowania, nazwa i wersja aplikacji oraz adres pod jakim się znajduje dla dev oraz produkcji
|   composer.json
|   composer.lock
|   LICENSE
|         
+---app
|   |   Bootstrap.php
|   |   
|   +---Config
|   |   |   router.php
|   |   |   
|   |   \---view
|   |           smarty.php
|   |           
|   +---Controller
|   |       Controller.php
|   |       Page.php
|   |       
|   \---View
|       |   Index.php
|       |   View.php
|       |   
|       +---templates
|           |   footer.html.php
|           |   header.html.php
|           |   index.html.php
|           |        
|           +---errors
|           |       404.html.php
|           |       
|           +---page
|                 test.html.php
| 
+---vendor
\---web
    |   config.php
    |   index.php
    |   
    +---assets

restful.jpg

Przyjazne linki

W wersji produkcyjnej dla samego nawet bezpieczeństwa warto używać.

RewriteEngine On

#Deny access for hidden folders and files
RewriteRule (^|/)\.([^/]+)(/|$) - [L,F]
RewriteRule (^|/)([^/]+)~(/|$) - [L,F]

# Ustawia folder web jako katalog głowny
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ web/$1

# Przekazuje zapytanie na index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ web/index.php [QSA,L]
# Ustawia folder web jako katalog głowny
location / {
    root   /home/[project_path]/htdocs/web;
    index  index.html index.php index.htm;
    if (!-e $request_filename) {
        rewrite ^/(.*)$ /index.php?q=$1 last;
    }
}

# Przekazuje zapytanie na index.php
location ~ .php$ {
    try_files $uri = 404;
    fastcgi_pass 127.0.0.1:9000;
    #fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    fastcgi_index web/index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}