[■]
codesaur/raptor
1=[↕]
1:1 ══ composer create-project codesaur/raptor my-project
codesaur/raptor · v5.2.1
Raptor
Цэвэр архитектуртай объект хандалттай веб хөгжүүлэлтийн фреймворк
[■]
Raptor
PSR стандартууд дээр суурилсан, олон давхаргат архитектуртай, олон байгууллагын (multi-tenant) RBAC эрхийн удирдлагатай, бүрэн CMS боломжтой PHP веб фреймворк. Анхдагч байдлаараа Web (нийтийн вебсайт) болон Dashboard (админ панель) гэсэн хоёр апп-тай ирдэг бөгөөд codesaur экосистемийн бусад багцуудыг нэгтгэн ажилладаг.
Онцлогууд
- PSR-7/PSR-15 middleware суурьтай архитектур
- JWT + Session нэвтрэлт баталгаажуулалт
- Олон байгууллагын (multi-tenant) RBAC эрхийн удирдлага
- Олон хэл дэмжлэг (Localization)
- CMS модулиуд: Мэдээ, Хуудас, Файл, Лавлах, Тохиргоо
- Дэлгүүр модуль: Бүтээгдэхүүн, Захиалга, Үнэлгээ
- MySQL, PostgreSQL алийг нь ч дэмжинэ
- SQL файл суурьтай өгөгдлийн сангийн migration систем
- codesaur/template engine (Twig маягийн синтакс)
- OpenAI интеграци (moedit editor)
- PSR-3 лог систем, PSR-14 Event Dispatcher
- И-мэйл (Brevo API, SMTP, PHP mail), Discord webhook мэдэгдэл
- SEO: Хайлт, Sitemap, XML Sitemap, RSS feed
- Спам хамгаалалт (honeypot, HMAC token, rate limiting, Cloudflare Turnstile)
- CSRF хамгаалалт
- Аль ч орчинд ажиллана: VPS, dedicated, cloud, shared hosting - mod_security / LiteSpeed WAF-ын ард ч method override, body encoding-оор саадгүй
- File-based cache (PSR-16), Trash сэргээлт, Sidebar badge систем
Үндсэн классууд
| Класс | Үүрэг |
|---|---|
Dashboard\Application | Админ панелийн middleware + router бүртгэл |
Web\Application | Нийтийн вебсайтын middleware + router бүртгэл |
Dashboard\DatabaseConnection | PDO холболт нээнэ - MySQL / PostgreSQL сонголт .env-ээс |
Dashboard\Controller | Бүх контроллерын суурь: PDO, RBAC, template, log |
Dashboard\MethodOverrideMiddleware | PUT/PATCH/DELETE-ийг X-HTTP-Method-Override-оос сэргээнэ (WAF) |
Dashboard\BodyEncodingMiddleware | base64 кодлогдсон POST body-г тайлна (WAF) |
Dashboard\ContainerMiddleware | PSR-11 container болон service-үүдийг request-д залгана |
Dashboard\SessionMiddleware | Session нээж, бичих шаардлагагүй үед эрт хаана |
Dashboard\Authentication\JWTAuthMiddleware | JWT баталгаажуулж User объект үүсгэнэ |
Dashboard\Localization\LocalizationMiddleware | Хэл болон орчуулгыг тодорхойлно |
Dashboard\Content\SettingsMiddleware | Системийн тохиргоог request-д дамжуулна |
Dashboard\CsrfMiddleware | Per-route CSRF хамгаалалт |
Dashboard\Authentication\User | Нэвтэрсэн хэрэглэгч: can(), is(), байгууллагын хамрах хүрээ |
Dashboard\RBAC\RBAC | Хэрэглэгчийн роль, эрхийн багц (кэштэй) |
Dashboard\Template\DashboardTrait | dashboard.html layout, sidebar, байгууллагын сэлгүүр |
Web\Template\TemplateController | Вебийн index.html layout, SEO meta, цэс |
Dashboard\CacheService | PSR-16 файл суурьтай кэш |
Dashboard\Log\Logger | PSR-3 лог - {table}_log хүснэгтүүдэд бичнэ |
Dashboard\Mail\Mailer | И-мэйл илгээгч (Brevo API, SMTP, PHP mail) |
Dashboard\Notification\EventDispatcher | PSR-14 event dispatcher |
Dashboard\Notification\DiscordNotifier | Discord webhook мэдэгдэл |
Dashboard\Migration\MigrationRunner | SQL migration файлыг гүйцэтгэнэ (driver-aware splitter) |
Dashboard\Migration\MigrationSecurityScanner | Эмзэг хүснэгт, DCL үйлдлийг илрүүлж анхааруулна |
Dashboard\Trash\TrashModel | Устгасан бичлэгийг хадгалж, буцаан сэргээнэ |
Dashboard\File\FileController | Файл upload, устгах суурь логик |
Dashboard\Badge\BadgeController | Sidebar-ийн үзээгүй үйлдлийн тоолол |
Dashboard\Exception\ErrorHandler | Template суурьтай алдааны хуудас |
Жишээ код
// application/web/WebRouter.php
use codesaur\Router\Router;
class WebRouter extends Router
{
public function __construct()
{
$this->GET('/', [HomeController::class, 'index'])->name('home');
$this->GET('/page/{slug}', [Content\PageController::class, 'page'])->name('page');
$this->GET('/news/{slug}', [Content\NewsController::class, 'news'])->name('news');
}
}
// application/web/HomeController.php
class HomeController extends Template\TemplateController
{
public function index()
{
$recent = (new NewsModel($this->pdo))->getRecentPublished($this->getLanguageCode());
$this->webTemplate(__DIR__ . '/home.html', ['recent' => $recent])->render();
}
}
Тест ажиллуулах
composer test
[■]
Info
Суулгах
composer create-project codesaur/raptor my-project
Шаардлага
- PHP 8.2.1+
- Composer
- MySQL / PostgreSQL
- ext-gd
- ext-intl
Хамаарал (codesaur)
- codesaur/http-message ^3.0.4
- codesaur/http-application ^7.0.1
- codesaur/dataobject ^10.1.1
- codesaur/http-client ^2.1.2
- codesaur/template ^4.1.1
- codesaur/container ^3.2.0
Баримт бичиг