omegamvc / omega
Omega is a lightweight PHP framework designed for building modern web applications using the MVC architecture. Compatible with PHP 8.2+.
Installs: 10
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:project
pkg:composer/omegamvc/omega
Requires
- php: ^8.4
- ext-apcu: *
- ext-http: *
- ext-iconv: *
- ext-mbstring: *
- ext-openssl: *
- ext-pcntl: *
- ext-pdo: *
- ext-posix: *
- ext-readline: *
- ext-simplexml: *
- omegamvc/framework: 2.0.0
Requires (Dev)
- filp/whoops: ^2.18
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^12.4
- squizlabs/php_codesniffer: ^3.13.4
Suggests
- ext-apache: If you want to use apache extension
README
Documentation | Changelog | Contributing | Code Of Conduct | License
Omega Starter Application
Welcome to omega, a minimal MVC framework designed to streamline your PHP development process. This lightweight framework offers essential features for building web applications while maintaining simplicity and ease of use.
🪐 Feature
- MVC structure
- Application Container (power with php-di)
- Router Support
- Models builder
- Query builder
- CLI command
- Service Provider and Middleware
- Templator (template engine)
Quick Start (4 Steps)
1 Create Your Project
composer create-project omegamvc/omega project-name
2️ Jump In
cd project-name
3️ Build Assets
npm install npm run build
4️ Launch!
php omega serve
That's it! Your app is now running. Let's build something awesome.
Building Your First Feature
We'll create a user profile feature from scratch.
Step 1: Create Database Schema
php omega make:migration profiles
php omega db:create # Only if database doesn't exist yet
Define your table structure:
// database/migration/<timestamp>_profiles.php Schema::table('profiles', function (Create $column) { $column('user')->varChar(32); $column('real_name')->varChar(100); $column->primaryKey('user'); })
Run the migration:
php omega migrate
Step 2: Generate Your Model
php omega make:model Profile --table-name profiles
Step 3: Create a Controller
php omega make:controller Profile
Add your logic:
// app/Controller/ProfileController.php public function handle(MyPDO $pdo): Response { return view('profile', [ 'name' => Profile::find('omegamvc', $pdo)->real_name ]); }
Step 4: Design Your View
php omega make:view profile
// resources/views/profile.template.php {% extend('base/base.template.php') %} {% section('title', 'Welcome {{ $name }}') %} {% section('content') %} <h1>Hello, {{ $name }}! 👋</h1> {% endsection %}
Step 5: Register Your Route
// route/web.php Router::get('/profile', [ProfileController::class, 'index']);
Done! Visit /profile
and see your work in action.
🔥 Pro Move: API with Attributes
Skip the route files entirely. Use attributes for clean, self-documented APIs:
php omega make:services Profile
// app/Services/ProfileServices.php #[Get('/api/v1/profile')] #[Name('api.v1.profile')] #[Middleware([AuthMiddleware::class])] public function index(MyPDO $pdo): array { $data = Cache::remember('profile', 3600, fn () => [ 'name' => Profile::find('omegamvc', $pdo)->real_name, 'status' => 200, ]); return JsonResponse($data); }
then register this route attribute.
Router::register([ ProfileServices::class, // add more class ]);
This automatically creates your route with middleware—no extra configuration needed!
Equivalent traditional route:
Route::get('/api/v1/profile', [ProfileServices::class, 'index']) ->name('api.v1.profile') ->middleware([AuthMiddleware::class]);
⚡ Performance Optimization
Ready for production? Cache everything:
php omegamvc view:cache # Cache compiled templates php omegamvc config:cache # Cache configuration php omegamvc route:cache # Cache all routes
Official Documentation
The official documentation for Omega is available here
Contributing
If you'd like to contribute to the Omega example application package, please follow our contribution guidelines.
License
This project is open-source software licensed under the GNU General Public License v3.0.