Giter Site home page Giter Site logo

php-framework's Introduction

一个轻量级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://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;
}

php-framework's People

Contributors

lisijie avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.