Raptor Framework
Цэвэр архитектуртай объект хандалттай веб хөгжүүлэлтийн фреймворк
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 систем
Архитектур
Нэг entry point, хэдэн ч апп байж болно - анхдагч байдлаар 2 апп. Хүсэлт middleware гинжээр дамжин router, controller, template хүртэл явна.
public_html/index.php (Entry point) | |-- /dashboard/* -> Dashboard\Application (Admin Panel) | |-- Middleware: ErrorHandler -> MethodOverride -> BodyEncoding | | -> Session -> JWT -> Container -> Localization -> Settings | |-- Routers: Login, Users, Organization, RBAC, Localization, Contents, | | Messages, Comments, Logs, Template, Shop, Development, Migration | \-- Controllers -> Templates -> HTML Response | \-- /* -> Web\Application (Public Website) |-- Middleware: ExceptionHandler -> MethodOverride -> BodyEncoding | -> Container -> Session -> Localization -> Settings |-- Routers: WebRouter, PortalRouter \-- Controllers -> Templates -> HTML Response Хүсэлтийн урсгал: Browser -> index.php -> .env -> ServerRequest -> Application selection (by URL path) -> Middleware chain (in order) -> Router match -> Controller::action() -> Model (DB) -> FileTemplate (codesaur/template) -> render() -> HTML Response -> Browser1:1
Middleware pipeline
PSR-15
- ErrorHandler
- MethodOverrideMiddleware
- BodyEncodingMiddleware
- SessionMiddleware
- JWTAuthMiddleware
- ContainerMiddleware
- LocalizationMiddleware
- SettingsMiddleware
- CsrfMiddleware (per-route)
- ExceptionHandler
- MethodOverrideMiddleware
- BodyEncodingMiddleware
- ContainerMiddleware
- SessionMiddleware
- LocalizationMiddleware
- SettingsMiddleware
Хянах самбарын модулиуд
Админ панель нь модуль тус бүр Controller, Model, template-ээ нэг хавтсанд багцалсан package-by-feature бүтэцтэй.
Нэвтрэлт
JWT + Session, нууц үг сэргээх, бүртгүүлэх хүсэлт, login оролдлогын хязгаар
Хэрэглэгч ба байгууллага
Олон байгууллага (multi-tenant), байгууллага солих, soft delete
RBAC
Дүр, эрх, alias-аар бүлэглэсэн зөвшөөрөл; coder / admin / manager / editor / viewer
Олон хэл
Хэл, орчуулгын текст удирдлага, кэштэй
Контент
Мэдээ, хуудас (мод бүтэц), лавлах хүснэгт, тохиргоо, файл, сэтгэгдэл
Дэлгүүр
Бүтээгдэхүүн, захиалга, үнэлгээ (1-5 од)
Мессеж
Холбоо барих формын мессеж, имэйлээр хариулах
Лог ба протокол
PSR-3 лог хүснэгтүүд, бичлэг бүрийн түүх, sidebar badge
Хогийн сав
Устгасан бичлэгийг эх ID-тэй нь сэргээх
Migration
SQL файл суурьтай, forward-only, аюулгүй байдлын сканнертай
Имэйл ба мэдэгдэл
Brevo API / SMTP / PHP mail, Discord webhook, PSR-14 event
Хөгжүүлэлт
Хөгжүүлэлтийн хүсэлт, гарын авлага, AI туслах (moedit)
Өгөгдлөө үүсгэнэ
Хоосон өгөгдлийн сангаа үүсгээд нэг команд - бүх хүснэгт, эхний өгөгдөл анх ажиллахад автоматаар үүснэ.
- PHP 8.2.1+
- Composer
- MySQL / PostgreSQL
- ext-gd
- ext-intl
composer create-project codesaur/raptor my-project
# Environment (development / production)
CODESAUR_APP_ENV=development
# Database (mysql | pgsql)
RAPTOR_DB_DRIVER=mysql
RAPTOR_DB_HOST=localhost
RAPTOR_DB_NAME=raptor
RAPTOR_DB_USERNAME=root
RAPTOR_DB_PASSWORD=
# JWT (secret is auto-generated)
RAPTOR_JWT_ALGORITHM=HS256
RAPTOR_JWT_LIFETIME=2592000
# WAF compatibility (mod_security)
RAPTOR_WAF_BODY_ENCODING=true
Document root заавал public_html/ байх ёстой - .env, application/, vendor/ түүнээс дээр байрлаж URL-аар хүрэшгүй байна.
PHPUnit 11 суурьтай unit болон integration тестүүдтэй. Integration тест .env.testing тохиргоог ашиглан тусдаа test database дээр transaction дотор ажиллаж, дуусахад rollback хийнэ.
composer test # All tests
composer test:unit # Unit tests only
composer test:integration # Integration tests only
Хавтасны бүтэц
package-by-feature
raptor/ |-- application/ # PHP application code (package-by-feature) | |-- dashboard/ # Admin panel + shared platform modules | \-- web/ # Public website application |-- public_html/ # Document root (index.php, assets/) |-- database/ | \-- migrations/ # SQL migration files |-- tests/ # PHPUnit tests (unit, integration) |-- docs/ # Documentation (en/, mn/, conf.example/) |-- .github/ | \-- workflows/ # CI + auto deploy |-- logs/ # Error logs |-- cache/ # Framework file cache (PSR-16) |-- protected/ # Protected files (outside docroot) |-- composer.json |-- phpunit.xml \-- LICENSE # MIT1:1
Үндсэн классууд
application/dashboard/ + application/web/
| Класс | Үүрэг |
|---|---|
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 суурьтай алдааны хуудас |
Экосистемийн багцууд
Багц бүр бие даасан, ямар ч PHP төсөлд Composer-оор суулгаж ашиглаж болно. Raptor нь эдгээрийг нэгтгэн бүрэн фреймворк болгодог.
| Package | Суулгасан хувилбар | PSR | Үүрэг |
|---|---|---|---|
| codesaur/http-message | v3.0.4 | PSR-7 | Цэвэр, минимал, объект хандалтат бүтэцтэй HTTP Message компонент (PSR-7) |
| codesaur/router | v6.0.1 | - | Хөнгөн, хурдан, объект-суурьтай маршрутчиллын (routing) компонент |
| codesaur/http-application | v7.0.1 | PSR-7, PSR-15 | PSR-7 & PSR-15 нийцсэн хөнгөн, уян хатан HTTP Application цөм |
| codesaur/dataobject | v10.1.1 | - | PDO суурьтай өгөгдлийн модель ба хүснэгт удирдагч компонент (MySQL / PostgreSQL / SQLite) |
| codesaur/template | v4.1.1 | - | Бие даасан PHP template engine - filters, functions, macros, expression parser |
| codesaur/http-client | v2.1.2 | - | HTTP хүсэлт илгээх болон MIME имэйл боловсруулах/илгээх хөнгөн жинтэй клиент компонент |
| codesaur/container | v3.2.0 | PSR-11 | Хөнгөн, хурдан, PSR-11 стандартад нийцсэн dependency injection container |
Яагаад "Raptor" гэж?
Дэлхийд анх удаа Монголын говиос (1923) олдсон Velociraptor хэмээх гайхалтай динозаврыг бэлэгдэж өгсөн нэр. Зохиогч Наранхүү динозавр, байгалийн түүхийг сонирхон уншиж судалдаг хүн. codesaur гэдэг нь code + saur - тэрбээр 1997 оноос C хэл дээр эхлэн програм зохиосон өөрийгөө "хуучин цагийн код бичигч динозавр" хэмээн хөгжилтэйгээр нэрлэсэн билээ.
Зохиогч: Narankhuu (codesaur)Энэ framework-т санхүүгийн дэмжлэг үзүүлж, хэрэгтэй санал хэлж байсан Gerege Systems LLC болон түүний үүсгэн байгуулагч Ц.Эрдэнэбат багшид талархал илэрхийлье.
gerege.com