mardira / mardira-framework
Mardira 框架
Requires
- php: ^7.4
- doctrine/inflector: ^2.0
- firebase/php-jwt: ^6.3
- symfony/console: 2.6.7
- vlucas/phpdotenv: ^5.5
This package is auto-updated.
Last update: 2024-09-08 10:16:01 UTC
README
Mardira 框架是一个基于模型控制器(MVC)模式的 PHP 框架,用于构建 Web 应用程序和 API。它设计得简单且高效。
目录
需求
- PHP = 7.4
- MySQL >= 5.7.8
- Apache >= 2.4.41
- Composer >= 2.0.9
文件夹结构
mardira-framework ├── App │ ├── Controllers │ │ ├── AuthController.php │ ├── Core │ │ ├── Commands │ ├── Database │ │ ├── Migrations │ │ │ ├── 2023_01_31_xxxxxx_create_table_users.php │ │ │ ├── 2023_01_31_xxxxxx_create_table_roles.php │ │ ├── Seeders │ │ │ ├── GlobalSeeder.php │ ├── Helpers │ ├── Middleware │ ├── Models │ ├── Packages │ ├── Routes │ │ ├── Api.php
安装
设置
您可以使用 composer 创建新项目
composer create-project mardira/mardira-framework <your_project_name>
或者您也可以克隆此项目
克隆
- 使用 `git clone` 命令将此仓库克隆到本地机器上
git clone https://github.com/Bootcamp-STMIK-Mardira-Indonesia/mardira-framework.git
然后,使用 composer 安装依赖
composer install
或者
composer update
使用方法
启动服务器
php mardira serve
或者
php mardira serve --port=<your_port>
创建 .env 文件
您可以使用命令创建 .env 文件
php mardira make:env
创建控制器
php mardira make:controller ControllerName
创建模型
php mardira make:model ModelName
创建路由
php mardira make:route route_name --controller=ControllerName
创建迁移
php mardira make:migration create_table_table_name
运行迁移
如果数据库不存在,将自动从 .env 中创建数据库
php mardira migrate
刷新迁移
php mardira migrate:refresh
使用种子刷新迁移
php mardira migrate:refresh --seed
创建种子
php mardira make:seeder SeederName
运行种子
php mardira db:seed
运行特定种子
php mardira db:seed --class=SeederName
创建认证
php mardira make:auth
刷新认证
php mardira make:auth --refresh
更新框架版本
php mardira update
控制器
使用
php mardira make:controller ControllerName
命令创建控制器,以下是一个示例控制器
<?php namespace App\Controllers; use App\Core\Controller; class HomeController extends Controller { public function index() { $this->response(200,[ 'message' => 'Hello World' ]); } }
要使用控制器,您可以在
App/Routes/Api.php
中添加路由
<?php use App\Core\Route; use App\Controllers\HomeController; Route::get('/home', [HomeController::class, 'index']);
响应
您可以在控制器中使用响应
$this->response(200,[ 'message' => 'Hello World' ]);
返回预期的 JSON
{ "message": "Hello World" }
另一个响应示例 409
$this->response->json(409,[ 'message' => 'Conflict' ]);
模型
使用
php mardira make:model ModelName
命令创建模型,以下是一个示例模型
<?php namespace App\Models; use App\Core\Model; class User extends Model { protected $table = 'users'; protected $primaryKey = 'id'; }
要使用模型,您可以在
App/Controllers/ControllerName.php
中添加模型
<?php namespace App\Controllers; use App\Core\Controller; use App\Models\User; class HomeController extends Controller { public function index() { $user = User::all(); $this->response(200,[ 'message' => 'Hello World', 'data' => $user ]); } }
迁移
使用
php mardira make:migration create_table_table_name
命令创建迁移,以下是一个示例迁移
<?php namespace App\Database\Migrations; use App\Core\Migration; return new class extends Migration { public function up() { $this->schema->create('users', function ($table) { $table->increment('id'); $table->string('name', 50); $table->string('email',50)->unique(); $table->string('password', 64); $table->timestamps(); }); } public function down() { $this->schema->dropIfExists('users'); } }
种子
使用
php mardira make:seeder SeederName
命令创建种子,以下是一个示例种子
<?php namespace App\Database\Seeders; use App\Core\Seeder; use App\Core\QueryBuilder as DB; class UserSeeder extends Seeder { public function run() { $data = [ [ 'name' => 'Administrator', 'username' => 'admin', 'email' => 'admin@admin.com', 'password' => password_hash('password', PASSWORD_DEFAULT), 'role_id' => 1, ], [ 'name' => 'User', 'username' => 'user', 'email' => 'user@user.com', 'password' => password_hash('password', PASSWORD_DEFAULT), 'role_id' => 2, ] ]; DB::table('users')->insert($data); } }
中间件
使用
php mardira make:middleware MiddlewareName
命令创建中间件,以下是一个示例中间件
<?php namespace App\Middleware; use App\Core\Middleware; use App\Core\Auth; class AuthMiddleware extends Middleware { public function handle() { if (Auth::check()) { return $next(); } return $this->response(401, ['message' => 'Unauthorized']); } }
要使用中间件,您可以在路由中添加中间件
Router::get('/schedules', [ScheduleController::class, 'index'], [AuthMiddleware::class]);
路由
您可以在
App/Routes/Api.php
中添加路由
<?php use App\Core\Route; Router::get('/home', [HomeController::class, 'index']);
路由分组
您可以在
App/Routes/Api.php
中添加路由分组
<?php use App\Core\Route; Router::controller(ProductController::class)->group(function () { Router::post('/products/store', 'store'); });
查询构建器
use App\Core\QueryBuilder as DB;
选择
DB::table('users')->select('name', 'email')->get();
WHERE 条件
// equal DB::table('users')->where('id', 1)->get(); DB::table('users')->where('id', 1, '>')->get(); DB::table('users')->where('id', 1, '<')->get(); DB::table('users')->where('id', 1, '>=')->get(); DB::table('users')->where('id', 1, '<=')->get(); DB::table('users')->where('id', 1, '!=')->get(); DB::table('users')->where('id', 1, '<>')->get(); // like DB::table('users')->where('name', 'admin', 'like')->get(); DB::table('users')->where('name', 'admin', 'not like')->get();
或 WHERE 条件
DB::table('users')->orWhere('id', 1)->get(); DB::table('users')->orWhere('id', 1, '>')->get(); DB::table('users')->orWhere('id', 1, '<')->get(); DB::table('users')->orWhere('id', 1, '>=')->get(); DB::table('users')->orWhere('id', 1, '<=')->get(); DB::table('users')->orWhere('id', 1, '!=')->get(); DB::table('users')->orWhere('id', 1, '<>')->get();
WHERE IN 条件
DB::table('users')->whereIn('id', [1,2,3])->get(); DB::table('users')->whereNotIn('id', [1,2,3])->get();
WHERE NOT IN 条件
DB::table('users')->whereNotIn('id', [1,2,3])->get();
WHERE NULL 条件
DB::table('users')->whereNull('id')->get();
WHERE NOT NULL 条件
DB::table('users')->whereNotNull('id')->get();
ORDER BY
DB::table('users')->orderBy('id', 'desc')->get(); DB::table('users')->orderBy('id', 'asc')->get();
连接表
DB::table('users') ->join('roles', 'users.role_id', '=', 'roles.id') ->select('users.*', 'roles.name as role_name') ->get();
GROUP BY
DB::table('users') ->groupBy('role_id') ->get();
INSERT
DB::table('users')->insert([ 'name' => 'user', 'email' => 'user@user.com', 'password' => password_hash('password', PASSWORD_DEFAULT), ]);
UPDATE
DB::table('users')->where('id', 1)->update([ 'name' => 'user', 'email' => 'user@gmail.com', ]);
DELETE
DB::table('users')->where('id', 1)->delete();
COUNT
DB::table('users')->count();
支持
您可以通过以下方式联系我!
- 网站:[demostmikmi.com](https://demostmikmi.com)