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
Requires (Dev)
- phpunit/phpunit: ^10.0
- dev-main
- v5.9.0
- 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-17 14:18:22 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
📁 Төслийн файл бүтэц
HTTP-Application/
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI/CD workflow
├── example/ # Жишээ код
│ ├── index.php # Application boot script
│ ├── ExampleRouter.php # Router жишээ
│ ├── ExampleController.php # Controller жишээ
│ ├── BeforeMiddleware.php # Before middleware жишээ
│ ├── AfterMiddleware.php # After middleware жишээ
│ ├── OnionMiddleware.php # Onion middleware жишээ
│ └── .htaccess # Apache rewrite тохиргоо
├── src/ # Эх код
│ ├── Application.php # Application цөм класс
│ ├── Controller.php # Controller суурь класс
│ ├── ExceptionHandler.php # Exception handler
│ └── ExceptionHandlerInterface.php # Exception handler интерфэйс
├── tests/ # Тестүүд
│ ├── ApplicationTest.php # Application тестүүд
│ ├── ControllerTest.php # Controller тестүүд
│ ├── ExceptionHandlerTest.php # ExceptionHandler тестүүд
│ ├── EdgeCaseTest.php # Edge case тестүүд
│ ├── PerformanceTest.php # Performance тестүүд
│ ├── TestHelper.php # Тест helper функцүүд
│ └── Integration/
│ └── ApplicationIntegrationTest.php # Integration тестүүд
├── .gitignore # Git ignore файл
├── [API.md](API.md) # API документаци
├── composer.json # Composer тохиргоо
├── LICENSE # MIT лиценз
├── phpunit.xml # PHPUnit тохиргоо
├── README.md # Энэ файл
└── [REVIEW.md](REVIEW.md) # Code review баримт бичиг
📝 Хэрэглээний жишээ
🔹 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 хэв маяг авахад маш тохиромжтой
🧪 Тест ажиллуулах
Багц нь PHPUnit тестүүдтэй ирдэг. Доорх зааварчилгааны дагуу тестүүдийг ажиллуулж болно.
Windows дээр тест ажиллуулах
Шаардлага:
- PHP 8.2+ суулгасан байх
- Composer суулгасан байх
- PowerShell эсвэл Command Prompt
Алхам:
-
Dependencies суулгах:
composer install
-
PHPUnit ажиллуулах:
vendor\bin\phpunit
Эсвэл coverage-тэй:
vendor\bin\phpunit --coverage-html coverage/html
-
Тодорхой тест файл ажиллуулах:
vendor\bin\phpunit tests/ApplicationTest.php
Linux дээр тест ажиллуулах
Шаардлага:
- PHP 8.2+ суулгасан байх
- Composer суулгасан байх
- PHP-XML, PHP-MBSTRING extensions идэвхжсэн байх
Алхам:
-
Dependencies суулгах:
composer install
-
PHPUnit ажиллуулах:
vendor/bin/phpunit
Эсвэл coverage-тэй:
vendor/bin/phpunit --coverage-html coverage/html
-
Тодорхой тест файл ажиллуулах:
vendor/bin/phpunit tests/ApplicationTest.php
macOS дээр тест ажиллуулах
Шаардлага:
- PHP 8.2+ суулгасан байх (Homebrew ашиглан:
brew install php@8.3) - Composer суулгасан байх
- Terminal
Алхам:
-
Dependencies суулгах:
composer install
-
PHPUnit ажиллуулах:
vendor/bin/phpunit
Эсвэл coverage-тэй:
vendor/bin/phpunit --coverage-html coverage/html
-
Тодорхой тест файл ажиллуулах:
vendor/bin/phpunit tests/ApplicationTest.php
Тестүүдийн бүтэц
tests/
├── ApplicationTest.php # Application классын тестүүд
├── ControllerTest.php # Controller суурь классын тестүүд
└── ExceptionHandlerTest.php # ExceptionHandler классын тестүүд
GitHub Actions CI/CD
Төсөл нь GitHub Actions CI/CD workflow-тэй ирдэг. Push эсвэл Pull Request хийхэд автоматаар тестүүд ажиллана:
- PHP хувилбарууд: 8.2, 8.3, 8.4
- Үйлдлийн системүүд: Ubuntu, Windows, macOS
- Coverage report: Codecov руу автоматаар илгээгдэнэ
📄 Лиценз
Энэ төсөл MIT лицензтэй.
📚 Нэмэлт Документаци
- 📘 API.md - Бүрэн API удирдлага, бүх класс болон method-үүдийн дэлгэрэнгүй тайлбар (PHPDoc комментоос Cursor AI үүсгэв)
- 🔍 REVIEW.md - Код шалгалтын тайлан, код чанар, архитектур, PSR стандартууд (Cursor AI шинжилсэн)
👨💻 Хөгжүүлэгч
Narankhuu
📧 codesaur@gmail.com
📱 +976 99000287
🌐 https://github.com/codesaur
🎯 Дүгнэлт
codesaur/http-application бол:
- Хөнгөн
- Уян хатан
- Стандарт мөрдсөн
- Энгийн
- Хурдан
PHP дээр PSR стандарт нийцсэн өөрийн аппликейшн бүтэцтэй болохыг хүсвэл хамгийн тохиромжтой сонголт юм!