bittokazi/php-simple-mvc-framework

专为简洁性而设计的PHP框架

0.5.2 2018-12-21 13:19 UTC

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());

    }
?>