nagyatka / kodiapp
PHP Application framework
Requires
- php: ^5.6 || ^7.0
- nagyatka/pandabase: v0.10.*
- nikic/fast-route: v1.0.1
- pimple/pimple: ^3.0
- swiftmailer/swiftmailer: v5.4.3
- symfony/translation: v3.1.3
- twig/twig: ~1.0
Requires (Dev)
- phpunit/phpunit: 5.4.8
- dev-master
- v0.11.25
- v0.11.24
- v0.11.23
- v0.11.22
- v0.11.21
- v0.11.20
- v0.11.19
- v0.11.18
- v0.11.17
- v0.11.16
- v0.11.15
- v0.11.14
- v0.11.13
- v0.11.12
- v0.11.11
- v0.11.10
- v0.11.9
- v0.11.8
- v0.11.7
- v0.11.6
- v0.11.5
- v0.11.4
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- v0.10.0
- v0.9.12
- v0.9.11
- v0.9.10
- v0.9.9
- v0.9.8
- v0.9.7
- v0.9.6
- v0.9.5
- v0.9.4
- v0.9.3
- v0.9.2
- v0.9.1
- v0.9.0
This package is auto-updated.
Last update: 2024-12-13 21:35:32 UTC
README
PHP application framework
Install
$ composer require nagyatka/kodiapp
Documentation v1.0
Magyar nyelvű dokumentáció
Alkalmazás indítása
/* * index.php */ define('PATH_BASE', dirname(__FILE__).'/..' ); // Composer autoloader require '../vendor/autoload.php'; use KodiApp\Application; use MyApp\MyAppConfiguration; Application::getInstance()->run(new MyAppConfiguration());
Egy alkalmazást az Application::getInstance()
osztály metódus meghívásával lehet elérni. Mivel az Application
Singleton mintát valósít meg, emiatt az alkalmazás futása során bárhol elérhető ezzel a metódus hívással.
Az alkalmazást elindítani a run metódussal lehet, amely paraméterként egy olyan osztály vár, ami megvalósítja az
ApplicationConfiguration
interfészt. Itt csak a initializeApplication
metódust kell implementálni, amelyet az
alkalmazás futása elején fog majd meghívni. Itt kell regisztrálni az adatbázis kapcsolatot, routokat, biztonsági
beállításokat, stb.
Ez a megközelítés nagy fokú szabadságot biztosít, hiszen megvalósíthatjuk úgy a konfigurációt, hogy konfigurációs osztályon belül töltjük be a konfigurációs fájlokat, de az is megoldható, hogy konstruktoron keresztül oldjuk meg ugyanezt.
class MyAppConfiguration implements ApplicationConfiguration { public function __construct() { // ... } public function initializeApplication(Application $application) { // ... } }
Komponensek
Komponensek regisztrációja
A különböző komponenseket az ApplicationConfiguration
interfészt megvalósító osztály initializeApplication
metódusában
kell inicializálni.
Routolás
Az útvonalakat egy tömbben kell definiálni a következő struktúra szerint:
//Struktúra: [route_name] => [ "method" => [HTTP method], "url" => [url], "handler" => "[controller_class]::[controller_class_function]", ], ... //Példa: "home" => [ "method" => "GET", "url" => "/", "handler" => "HomeController::handleIndex", ],
Router inicializálása:
class MyAppConfiguration implements ApplicationConfiguration { private $myroutes = [ "home" => [ "method" => "GET", "url" => "/", "handler" => "HomeController::handleIndex", ], ]; public function initializeApplication(Application $application) { $router = new SimpleRouter(); $router->setRoutes($this->myroutes); $application->setRouter($router); } }
A route-hoz tartozó HomeController:
class HomeController { public function handleIndex() { return "Hello world!"; } }
Paraméterek beállítása az urlben:
class MyAppConfiguration implements ApplicationConfiguration { private $myroutes = [ "home" => [ "method" => "GET", "url" => "/user/{user_id:[0-9]+}", "handler" => "UserController::getUser", ], ]; public function initializeApplication(Application $application) { $router = new SimpleRouter(); $router->setRoutes($this->myroutes); $application->setRouter($router); } } class UserController { public function getUser($params) { return "User_id: ".$params["user_id"]; } }
A megadott url-ekben tetszőlegesen beállíthatóak paraméterek, amiket a metódus egy asszociatív tömbben kap meg.
Az url paramétereknél :
-tal elválasztva megadható reguláris kifejezés is, amelynek teljesülnie kell, hogy meghívódjon
a handlerben megadott metódus! A url-k beállításáról részletesebben itt tudsz
olvasni.