codesaur / http-application
PHP 8.2+ · PSR-7 & PSR-15 нийцсэн хөнгөн, уян хатан HTTP Application цөм
Installs: 315
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/codesaur/http-application
Requires
- codesaur/http-message: >=1.8.0
- codesaur/router: >=4.4.2
- psr/http-server-middleware: >=1.0.2
- dev-main
- v5.8.1
- v5.8.0
- v5.7.2
- v5.7.1
- v5.7.0
- v5.6.0
- v5.5.6
- v5.5.5
- v5.5.4
- v5.5.3
- v5.5.2
- v5.5.1
- v5.5.0
- v5.4.7
- v5.4.6
- v5.4.5
- v5.4.4
- v5.4.3
- v5.4.2
- v5.4.1
- v5.4.0
- v5.3.5
- v5.3.4
- v5.3.3
- v5.3.2
- v5.3.1
- v5.3.0
- v5.2.6
- v5.2.5
- v5.2.4
- v5.2.3
- v5.2.2
- v5.2.1
- v5.2.0
- v5.1.9
- v5.1.8
- v5.1.7
- v5.1.6
- v5.1.5
- v5.1.4
- v5.1.3
- v5.1.2
- v5.1.1
- v5.1
- v5.0
- v4.7
- v4.6
- v4.5
- v4.4
- v4.3
- v4.2
- v4.1
- v4.0
- v3.1
- v3.0
- v2.5
- v2.4
- v2.3
- v2.2.1
- v2.2
- v2.1
- v2.0.2
- v2.0.1
- v2.0
- v1.2.1
- v1.2
- v1.1.2
- v1.1.1
- v1.1
- v1.0.2
- v1.0.1
- v1.0
This package is auto-updated.
Last update: 2025-12-01 05:39:13 UTC
README
PHP 8.2+ · PSR-7 & PSR-15 нийцсэн хөнгөн, уян хатан HTTP Application цөм
codesaur/http-application нь PSR-7 (HTTP Message) ба PSR-15 (HTTP Server RequestHandler/Middleware) стандартууд дээр суурилсан минималист, өндөр уян хатан, middleware суурьтай Application цөм юм.
Та хүсвэл:
- Router нэмэх
- Middleware удирдах
- Controller/action ашиглах
- Closure route ашиглах
- Exception handler бүртгэх
- Custom request attributes ашиглах
гэ мэтээр өөрийн хүссэн бүтэцтэй web application-ийг хэдхэн мөр кодоор босгох боломжтой.
🚀 Гол боломжууд
✔ PSR-7 стандартын ServerRequest + Response
Request болон Response объектууд бүгд immutable, бүрэн стандартын дагуу.
✔ PSR-15 Middleware & RequestHandler гинжин бүтэц
Middleware-үүд өөр хоорондоо сонгино шиг (before → action → after) ажиллана.
✔ Уян хатан Router интеграци
Багц нь codesaur/router-ийг шууд дэмждэг.
Dynamic, typed, multi-method маршрутуудыг амархан зарлана.
✔ Controller суурь класс
PHP MVC хэв маягтай хөгжүүлэхэд тохиромжтой.
✔ Exception Handler
Алдааны боловсруулалт. Development mode дээр trace харуулдаг. Хөгжүүлэгч өөрийн хүссэнээр сайжруулж болно.
✔ Хэт хөнгөн, хурдан
Ямар ч framework-ийн суурь болгон ашиглах боломжтой.
📦 Суулгах
composer require codesaur/http-application
🧱 Архитектур
Application
├── Middleware stack (PSR-15 + Closure)
├── Router (codesaur/router)
├── ExceptionHandler
└── Controller / Closure route executor
Application → Middleware-үүд → Match route → Controller/action/Closure → Response
📁 Жишээ төслийн бүтэц (example/)
example/
├── index.php
├── ExampleRouter.php
├── ExampleController.php
├── BeforeMiddleware.php
├── AfterMiddleware.php
├── OnionMiddleware.php
└── .htaccess
📝 Хэрэглээний жишээ
🔹 Application boot script (index.php)
$application = new class extends Application { public function __construct() { parent::__construct(); $this->use(new ExceptionHandler()); $this->use(new BeforeMiddleware()); $this->use(new AfterMiddleware()); $this->use(new OnionMiddleware()); $this->use(new ExampleRouter()); $this->GET('/', [ExampleController::class, 'index']); } }; $application->handle((new ServerRequest())->initFromGlobal());
🔗 Router жишээ
$this->GET('/hello/{firstname}', [ExampleController::class, 'hello'])->name('hi'); $this->POST_PUT('/post-or-put', [ExampleController::class, 'post_put']); $this->GET('/float/{float:number}', [ExampleController::class, 'float']); $this->GET('/sum/{int:a}/{uint:b}', function ($req) { $a = $req->getAttribute('params')['a']; $b = $req->getAttribute('params')['b']; echo "$a + $b = " . ($a + $b); });
🧭 Controller жишээ
class ExampleController extends Controller { public function hello(string $firstname) { $user = $firstname; $params = $this->getQueryParams(); if (!empty($params['lastname'])) { $user .= " {$params['lastname']}"; } echo "Hello $user!"; } }
🧅 Middleware жишээ (Onion модель)
BeforeMiddleware → request шинээр attribute нэмэх
AfterMiddleware → request-ийн хугацааг хэвлэх
OnionMiddleware → before/after лог хэвлэх
class OnionMiddleware implements MiddlewareInterface { public function process($req, $handler): ResponseInterface { var_dump("i'm onion before"); $res = $handler->handle($req); var_dump("i'm onion after"); return $res; } }
⚠ Алдааны боловсруулалт (ExceptionHandler)
$this->use(new ExceptionHandler());
- Алдааны код байвал HTTP статус автоматаар тохируулна
- Алдааг
error_logруу бичнэ - HTML error page буцаана
- Development mode дээр trace харагдана
define('CODESAUR_DEVELOPMENT', true);
🔍 Request боловсруулах дараалал
- Middleware stack эхнээс нь дуудна
- Router → Match → Callback/Controller action
- Middleware stack буцаад дуусгана
- Response-г хэрэглэгч рүү дамжуулна
🔧 Custom ExceptionHandler ашиглах
class MyHandler implements ExceptionHandlerInterface { public function exception(Throwable $e) { http_response_code(500); echo "Custom error: " . $e->getMessage(); } } $app->use(new MyHandler());
📘 Хөгжүүлэлтийн зөвлөмж
- PHP 8.2+ орчин
- Apache + .htaccess rewrite тохиргоотой
- Төсөлдөө MVC хэв маяг авахад маш тохиромжтой
📄 Лиценз
Энэ төсөл MIT лицензтэй.
👨💻 Хөгжүүлэгч
Narankhuu
📧 codesaur@gmail.com
📱 +976 99000287
🌐 https://github.com/codesaur
🎯 Дүгнэлт
codesaur/http-application бол:
- Хөнгөн
- Уян хатан
- Стандарт мөрдсөн
- Энгийн
- Хурдан
PHP дээр PSR стандарт нийцсэн өөрийн аппликейшн бүтэцтэй болохыг хүсвэл хамгийн тохиромжтой сонголт юм!