sonypradana / php-mvc
Very light php mvc, include cli easyer to creat controller view and model quikly
Installs: 105
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 0
Open Issues: 0
Type:project
pkg:composer/sonypradana/php-mvc
Requires
- php: ^8.0
- react/event-loop: ^1.5
- sonypradana/php-library: ^0.40
- vlucas/phpdotenv: ^5.6
Requires (Dev)
- filp/whoops: ^2.18
- friendsofphp/php-cs-fixer: ^3.75
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^9.6 || ^10.5
- v2.1.x-dev
- v2.1.0
- v2.0.x-dev
- v2.0.0
- v2.0.0-rc
- v2.0.0-beta.3
- v2.0.0-beta.2
- v2.0.0-beta.1
- v1.1.x-dev
- v1.1.0
- v1.1.0-beta.2
- v1.1.0-beta.1
- v1.0.x-dev
- v1.0.0
- v1.0.0-beta.10
- v1.0.0-beta.9
- v1.0.0-beta.8
- v1.0.0-beta.7
- v1.0.0-beta.6
- v1.0.0-beta.5
- v1.0.0-beta.4
- v1.0.0-beta.3
- v1.0.0-beta.2
- v1.0.0-beta.1
- v0.2.x-dev
- v0.2.1
- v0.2.0
- v0.1.x-dev
- v0.1.6
- v0.1.5
- 0.1
- dev-master
- dev-dev
This package is auto-updated.
Last update: 2025-10-15 04:04:20 UTC
README
🚀 PHP MVC Skeleton
Welcome to php-mvc, 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 sonypradana/php-mvc project-name
2️⃣ Jump In
cd project-name
3️⃣ Build Assets
npm install npm run build
4️⃣ Launch!
php cli 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 cli make:migration profiles
php cli 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 cli migrate
Step 2: Generate Your Model
php cli make:model Profile --table-name profiles
Step 3: Create a Controller
php cli make:controller Profile
Add your logic:
// app/Controller/ProfileController.php public function index(MyPDO $pdo): Response { return view('profile', [ 'name' => Profile::find('pradana', $pdo)->real_name ]); }
Step 4: Design Your View
php cli 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 cli 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('pradana', $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 cli view:cache # Cache compiled templates php cli config:cache # Cache configuration php cli route:cache # Cache all routes
Your app will thank you with blazing-fast response times.
📄 License
Open source under the MIT License. Build something amazing!