🦖
[] codesaur/raptor 1=[]
codesaur/raptor · v5.2.1

Raptor

Цэвэр архитектуртай объект хандалттай веб хөгжүүлэлтийн фреймворк

Packagist version Downloads PHP version License Aikido Intel 90/100 PSR-3PSR-4PSR-7PSR-11PSR-12PSR-14PSR-15PSR-16
1:1 ══ composer create-project codesaur/raptor my-project
[] 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\DatabaseConnectionPDO холболт нээнэ - MySQL / PostgreSQL сонголт .env-ээс
Dashboard\ControllerБүх контроллерын суурь: PDO, RBAC, template, log
Dashboard\MethodOverrideMiddlewarePUT/PATCH/DELETE-ийг X-HTTP-Method-Override-оос сэргээнэ (WAF)
Dashboard\BodyEncodingMiddlewarebase64 кодлогдсон POST body-г тайлна (WAF)
Dashboard\ContainerMiddlewarePSR-11 container болон service-үүдийг request-д залгана
Dashboard\SessionMiddlewareSession нээж, бичих шаардлагагүй үед эрт хаана
Dashboard\Authentication\JWTAuthMiddlewareJWT баталгаажуулж User объект үүсгэнэ
Dashboard\Localization\LocalizationMiddlewareХэл болон орчуулгыг тодорхойлно
Dashboard\Content\SettingsMiddlewareСистемийн тохиргоог request-д дамжуулна
Dashboard\CsrfMiddlewarePer-route CSRF хамгаалалт
Dashboard\Authentication\UserНэвтэрсэн хэрэглэгч: can(), is(), байгууллагын хамрах хүрээ
Dashboard\RBAC\RBACХэрэглэгчийн роль, эрхийн багц (кэштэй)
Dashboard\Template\DashboardTraitdashboard.html layout, sidebar, байгууллагын сэлгүүр
Web\Template\TemplateControllerВебийн index.html layout, SEO meta, цэс
Dashboard\CacheServicePSR-16 файл суурьтай кэш
Dashboard\Log\LoggerPSR-3 лог - {table}_log хүснэгтүүдэд бичнэ
Dashboard\Mail\MailerИ-мэйл илгээгч (Brevo API, SMTP, PHP mail)
Dashboard\Notification\EventDispatcherPSR-14 event dispatcher
Dashboard\Notification\DiscordNotifierDiscord webhook мэдэгдэл
Dashboard\Migration\MigrationRunnerSQL migration файлыг гүйцэтгэнэ (driver-aware splitter)
Dashboard\Migration\MigrationSecurityScannerЭмзэг хүснэгт, DCL үйлдлийг илрүүлж анхааруулна
Dashboard\Trash\TrashModelУстгасан бичлэгийг хадгалж, буцаан сэргээнэ
Dashboard\File\FileControllerФайл upload, устгах суурь логик
Dashboard\Badge\BadgeControllerSidebar-ийн үзээгүй үйлдлийн тоолол
Dashboard\Exception\ErrorHandlerTemplate суурьтай алдааны хуудас

Жишээ код

// 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
Aikido оноо 90/100
Шалгасан: 2026-09-04
Холбоосууд