alsocoder/apnaphp
最新稳定版本:v1.0.0
Composer 安装命令:
composer create-project alsocoder/apnaphp
包简介
ApnaPHP - A Next.js App Router style + Laravel inspired PHP framework with file-based routing
README 文档
README
Ready-to-use starter template for ApnaPHP Framework - A modern PHP framework inspired by Next.js App Router and Laravel.
🚀 Features
- File-based Routing: Next.js App Router style routing with
.apna.phpfiles - Laravel-like ORM: Eloquent-inspired models with schema definition
- Multiple Database Support: MySQL, MariaDB, PostgreSQL, MongoDB, SQLite
- Auto-migration: Automatic schema creation from model definitions
- Middleware Support: Hierarchical middleware system
- Console Commands: Built-in CLI with
php apna serve - Modern PHP: PHP 8.1+ with modern syntax and features
📦 Installation
Using Composer
composer create-project alsocoder/apnaphp my-app
cd my-app
Manual Installation
composer require alsocoder/apnaphp-framework
🏃♂️ Quick Start
1. Create a New Project
composer create-project alsocoder/apnaphp my-app
cd my-app
2. Configure Database
Edit .env file:
DB_DRIVER=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=my_database DB_USERNAME=root DB_PASSWORD=password
3. Start Development Server
php apna serve
Your application will be available at http://localhost:3000
📁 Project Structure
my-app/
├── app/
│ ├── api/ # API routes
│ │ └── users/
│ │ └── route.apna.php
│ ├── dashboard/ # Page routes
│ │ └── page.apna.php
│ └── layout.apna.php # Layout files
├── config/
│ ├── app.php
│ └── database.php
├── models/
│ └── User.php
├── public/
│ └── index.php
└── storage/
├── cache/
├── logs/
└── uploads/
🛣️ Routing
File-based Routing
Create routes by adding .apna.php files:
API Routes (app/api/*/route.apna.php):
<?php use ApnaPHP\Routing\Request; use ApnaPHP\Routing\Response; class UsersHandler { public function GET(Request $request) { return Response::json(['users' => User::all()]); } public function POST(Request $request) { $user = User::create($request->all()); return Response::json($user, 201); } }
Page Routes (app/*/page.apna.php):
<?php $users = User::all(); ?> <!DOCTYPE html> <html> <head> <title>Users</title> </head> <body> <h1>Users</h1> <?php foreach ($users as $user): ?> <div><?= $user->name ?></div> <?php endforeach; ?> </body> </html>
🗄️ Database & Models
Model Definition
<?php namespace App\Models; use ApnaPHP\Database\Model; class User extends Model { protected $table = 'users'; protected $autoMigrate = true; protected $schema = [ 'name' => 'required|type:string|length:255', 'email' => 'required|unique|type:string|length:255', 'phone' => 'nullable|type:string|length:20', 'age' => 'type:integer|min:18|max:120|default:18', 'status' => 'type:string|in:active,inactive|default:active' ]; protected $fillable = ['name', 'email', 'phone', 'age']; protected $hidden = ['password']; }
Database Operations
// Create $user = User::create([ 'name' => 'John Doe', 'email' => 'john@example.com' ]); // Find $user = User::find(1); $user = User::where('email', 'john@example.com')->first(); // Update $user->name = 'Jane Doe'; $user->save(); // Delete $user->delete(); // Query Builder $users = User::where('status', 'active') ->where('age', '>', 18) ->orderBy('name') ->limit(10) ->get();
🗃️ Database Support
MySQL/MariaDB
DB_DRIVER=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=my_app DB_USERNAME=root DB_PASSWORD=password
PostgreSQL
DB_DRIVER=postgresql DB_HOST=localhost DB_PORT=5432 DB_DATABASE=my_app DB_USERNAME=postgres DB_PASSWORD=password
MongoDB
DB_DRIVER=mongodb DB_HOST=localhost DB_PORT=27017 DB_DATABASE=my_app
SQLite
DB_DRIVER=sqlite DB_DATABASE=storage/database/database.sqlite
🛠️ Console Commands
# Start development server php apna serve # Create new model php apna make:model Post # Create new route php apna make:route products # Create new middleware php apna make:middleware AuthMiddleware # Create new migration php apna make:migration create_posts_table # List all routes php apna routes # Show version php apna --version
🔧 Configuration
Application Config (config/app.php)
<?php return [ 'name' => env('APP_NAME', 'ApnaPHP Application'), 'env' => env('APP_ENV', 'production'), 'debug' => env('APP_DEBUG', false), 'url' => env('APP_URL', 'http://localhost'), 'timezone' => env('APP_TIMEZONE', 'UTC'), ];
Database Config (config/database.php)
<?php return [ 'default' => env('DB_DRIVER', 'mysql'), 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', 3306), 'database' => env('DB_DATABASE', ''), 'username' => env('DB_USERNAME', ''), 'password' => env('DB_PASSWORD', ''), ], // ... other connections ], ];
🤝 Contributing
We appreciate your interest! However, please note:
- ✅ You can use this framework to build applications
- ✅ You can report bugs and issues
- ✅ You can suggest features
- ❌ Direct modifications to the framework core are not accepted
- ❌ Derivative works of the framework are not permitted
For feature requests and bug reports, please open an issue on GitHub.
📄 License
This project is licensed under the MIT License with additional restrictions - see the LICENSE file for details.
Important: You may use this framework to build applications, but you are NOT permitted to modify, alter, or create derivative works of the framework itself without explicit written permission.
🙏 Acknowledgments
- Inspired by Next.js App Router
- Inspired by Laravel
- Built with modern PHP features
📞 Support
- 📧 Email: support@alsocoder.com
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 📖 Documentation: docs.apnaphp.com
Made with ❤️ by Also Coder (Dinesh Gupta)
© 2025 Also Coder. All rights reserved.
统计信息
- 总下载量: 11
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-10-09