Raptor Framework
Цэвэр архитектуртай объект хандалттай веб хөгжүүлэлтийн фреймворк
PSR стандартууд дээр суурилсан, олон давхаргат архитектуртай, олон байгууллагын (multi-tenant) RBAC эрхийн удирдлагатай, бүрэн CMS боломжтой PHP веб фреймворк. Анхдагч байдлаараа Web (нийтийн вебсайт) болон Dashboard (админ панель) гэсэн хоёр апп-тай ирдэг бөгөөд codesaur экосистемийн бусад багцуудыг нэгтгэн ажилладаг.
- PSR-7/PSR-15 middleware суурьтай архитектур
- JWT + Session нэвтрэлт баталгаажуулалт
- Олон байгууллагын (multi-tenant) RBAC эрхийн удирдлага
- Олон хэл дэмжлэг (Localization) - хэл бүр URL prefix-тэй (/en/...), canonical + hreflang автоматаар
- Бүх хэлэнд нэг дор харагдах бичлэг (code = "*") - мэдээ, хуудас, бүтээгдэхүүнд
- CMS модулиуд: Мэдээ, Хуудас, Файл, Лавлах, Тохиргоо
- Дэлгүүр модуль: Бүтээгдэхүүн, сагс, олон бүтээгдэхүүнтэй захиалга, нөөцийн хяналт (баталгаажуулахад хасаж, цуцлахад буцаана), Үнэлгээ
- MySQL, PostgreSQL алийг нь ч дэмжинэ
- SQL файл суурьтай өгөгдлийн сангийн migration систем
- codesaur/template engine (Twig маягийн синтакс, autoescape-тай XSS хамгаалалт)
- 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, цэс |
Web\Shop\Cart | Session сагс - зөвхөн [product_id => тоо], үнэ/нөөцийг DB-ээс дахин уншина |
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.2.1 | - | PDO суурьтай өгөгдлийн модель ба хүснэгт удирдагч компонент (MySQL / PostgreSQL / SQLite) |
| codesaur/template | v5.0.1 | - | Бие даасан PHP template engine - autoescape, 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