bittokazi / php-simple-mvc-framework
专为简洁性而设计的PHP框架
0.5.2
2018-12-21 13:19 UTC
Requires
- respect/validation: ^2.0@dev
This package is auto-updated.
Last update: 2024-09-15 09:52:57 UTC
README
- composer create-project bittokazi/php-simple-mvc-framework
PHP简单模型视图控制(MVC)框架
基于PHP构建的简单模型视图和控制框架。
- 使用特定的控制器类方法定义路由
- 在单个配置文件中定义所有配置
- 数据库迁移功能
- 数据库种子选项
- 在开发模式下使用特定链接安装、卸载、种子数据库
- 过滤器选项作为中间件工作
- 模块化选项,将新功能作为模块添加到框架中
- 模块配置文件(不想使用模块?只需禁用它即可)
- 每个类文件都使用命名空间
- 为模块添加拦截器功能(甚至在过滤器之前拦截)
- 按需添加视图文件,并从控制器方法中调用它
- 添加ORM模块以简化数据库操作
即将推出的功能!
- 模板引擎模块。
安装
通过Composer
- composer create-project bittokazi/php-simple-mvc-framework
- 数据库迁移
- composer db:install
- composer db:seed
- composer db:uninstall
独立安装
只需将应用程序运行位置处的代码复制粘贴即可开始开发!
所有请求都将发送到/public文件夹
在"database"文件夹中定义数据库迁移类,并通过这些URL安装、卸载和种子(仅在开发模式下工作)
Install -> https:///php-mvc/public/install.mvc Uninstall -> https:///php-mvc/public/uninstall.mvc Seed -> https:///php-mvc/public/seed.mvc
路由声明
在"config/routes.php"文件中声明请求路由(目前支持GET/POST)。示例
Routes::get(contoller, link); Routes::get(contoller#method, link); Routes::get(contoller#method, link, filter);
这里的"?id"是路径变量。
<?php Routes::get('FrontController', '/'); Routes::get('FrontController#get_id', '/?id'); Routes::get('FrontController#get', '/home/go'); Routes::post('FrontController#post', '/home/go'); Routes::get('FrontController#get_id', '/idea/?id');*/ Routes::get('FrontController#get_r', '/home/id/?id/r/?r'); Routes::get('Backend/Login', '/dashboard/login'); Routes::post('Backend/Login#check_login', '/dashboard/login'); Routes::get('Backend/Login#logout', '/dashboard/logout'); Routes::get('Backend/Dashboard', '/dashboard', 'Backend/Authentication'); ?>
数据库迁移文件
所有数据库迁移类文件都将放在"database/"文件夹中。示例数据库迁移类
<?php namespace Database; use Core\Database; use Core\Auth; class all_database extends Database { public function install() { $this->query('CREATE TABLE user ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, firstname VARCHAR(30), lastname VARCHAR(30), status VARCHAR(30), role VARCHAR(30) )'); $this->query('CREATE TABLE user_status ( id INT(3) UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL UNIQUE )'); $this->query('CREATE TABLE user_role ( id INT(3) UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL UNIQUE )'); $this->query('CREATE TABLE user_notes ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL UNIQUE, content TEXT )'); } public function seed() { $this->query("INSERT INTO user_status VALUES('', 'Active')"); $this->query("INSERT INTO user_role VALUES('', 'Administrator')"); $this->query("INSERT INTO user_role VALUES('', 'User')"); $this->query("INSERT INTO user VALUES('', 'admin', '".Auth::CryptBf('password')."', 'bitto.kazi@gmail.com', 'N/A', 'N/A', '1', '1')"); $this->query("INSERT INTO user VALUES('', 'user', '".Auth::CryptBf('password')."', 'bitto.kazi1@gmail.com', 'N/A', 'N/A', '1', '2')"); } public function uninstall() { $this->query('DROP TABLE user_status'); $this->query('DROP TABLE user_role'); $this->query('DROP TABLE user'); $this->query('DROP TABLE user_notes'); } } ?>
您可以在模型文件中使用类似以下示例的预处理语句
<?php namespace App\Models; use Core\Model; use Core\Auth; public function all() { return $this->DB()->prepared_select('SELECT *, user.id as id FROM user INNER JOIN user_role ON user.role=user_role.id', '', array()); } ?>