Skip to content

lisijie/php-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

一个轻量级PHP框架

一个优雅、简洁、高效的PHP框架,用于快速开发扩展性强、可维护性强的PHP项目,零学习成本。

安装说明

只安装框架:

$ composer require lisijie/framework

创建一个带有基本应用程序模板的项目**(推荐)**:

$ composer create-project lisijie/framework-app

使用说明

一、目录结构

一个基本的应用目录结构如下:

|- app 应用目录
|  |- Command 命令行脚本控制器(可选)
|  |- Config 配置文件
|  |- Controller Web控制器
|  |- Exception 自定义异常类型和异常处理器(可选)
|  |- Model 数据模型,提供数据的读写接口,一张表对应一个类(可选)
|  |- Service Service模块,封装业务逻辑,操作Model(可选)
|  |- View 视图模板文件
|- data 运行时数据目录(日志、缓存文件等)
|- public 发布目录,存放外部可访问的资源和index.php入口文件
|- vendor composer第三方包目录

框架使用符合PSR规范的自动加载机制,可以在 app 目录下创建其他包。如工具包 Util,使用的命名空间为 App\Util

二、配置文件

配置文件统一放置在 app/Config 目录下,其下又分了 development、testing、pre_release、production 子目录,分别用于开发环境、测试环境、预发布环境、生产环境的配置。放在 Config 根目录下的配置文件表示全局配置,如路由配置。放在环境目录下的为差异配置。加载方式是:首先读取全局配置,然后读取差异配置,然后将差异配置的配置项覆盖到全局配置。

配置的获取方式为:

\App::config()->get('app', 'varname', 'default');

其中 app 表示配置文件名,varname 表示配置项, default 表示当不存在该配置项时,使用它作为返回值。

三、命令行脚本

很多项目都会有在命令行模式下执行PHP脚本的需求,例如结合crontab做定时数据统计、数据清理等。在本框架中,命令行脚本控制器统一放在Command目录下,需要继承自 Core\Command,如果需要参数,则必须在方法中声明。示例代码:

<?php
namespace App\Command;

use Core\Command;

class DemoCommand extends Command
{
    public function testAction($name)
    {
        $this->stdout("hello, {$name}\n");
    }
}

执行命令行脚本方法:

直接在终端使用以下命令执行

php index.php 路由地址 参数1 参数2... 

例如以上代码的执行命令为

[demo@localhost public]$ php index.php demo/test world
hello, world

如果你需要定时执行以上命令,把它添加到crontab配置中即可。

四、控制器

控制器位于 app\Controller 目录下,可以在该目录下创建多个包,每个控制器类的名称以 Controller 为后缀。如:MainController.php。一个控制器类大致如下:

<?php
namespace App\Controller;

class MainController extends Controller
{

    public function init()
    {
        // 初始化方法
    }

    public function indexAction()
    {
        $this->assign('foo', 'bar');
        return $this->render();
    }

}

每个动作方法必须加上 Action 后缀。对应的访问地址为:http:https://domain.com/?r=main/index。其中 r 参数为路由变量,路由地址是 main/index。路由地址为全小写形式,多个单词将被转换成小写+减号的形式,例如 UserInfoController::indexAction() 对应的路由地址为 user-info/index。为了让url看起来更加美观,建议在web服务器配置url rewrite。

五、服务器配置

Nginx

要启用Url重写,请在Nginx网站配置中增加以下配置:

location / {
    try_files $uri $uri/ /index.php?$args;
}

About

一个优雅、简洁、高效的PHP框架

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages