cherry-project/router 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

cherry-project/router

Composer 安装命令:

composer require cherry-project/router

包简介

Cherry-project Router

README 文档

README

The Cherry-project Router

GitHub license

GitHub release

Packagist Version

Including

Install from composer composer require cherry-project/router

Include Autoloader in your main file (Ex.: index.php)

require_once __DIR__ . '/vendor/autoload.php';

Define application root directory

define('__ROOT__', __DIR__);

In your application you must have config.json file for storing app configuration settings and you must define his location:

define('CONFIG_FILE', __DIR__ . '/config/config.json');

config.json must contain path to routes.json and controllers directory

{
    "ROUTES_FILE": "config/routes.json",
    "CONTROLLERS_PATH": "controllers"
}

Get app config parameters and define it:

$config = file_get_contents(CONFIG_FILE)
    or die("Unable to open config file!");

$config = json_decode($config, 1);

foreach ($config as $k => $v)
    define($k, __DIR__ . '/' . $v);

Notice: This approach will be replaced in the new version :))

It's time to configure routes file

The routes file is a json file, where object key is route unique name.

Each route must have path, method and action keys. Homepage route example:

{
  "homepage": {
      "path": "/",
      "method": "GET",
      "action": "DefaultController::index"
  }
}

Router file basic structure

{
    "[RouteName]": {
        "path": "[URL]",
        "method": "[HTTP_Method]",
        "action": "[Controller]::[Method]"
    }
}

Definitions for router keys:

  • [RouteName] - Route unique name;
  • path - Route url. (Ex.: For address http://www.example.com/homepage [URL] is homepage);
  • method - Route HTTP Method. Allowed all HTTP methods;
  • action - Route callback action. The firs part of action (before ::) is your controller (stored in CONTROLLERS_PATH). Controller is a simple PHP Class where [Controller] is Class name (Class name and class filename must have same names (Ex.: [Controller].php)). The second part of action key (after ::) is controllers (class) public method;

Your route path can use Placeholders. Placeholder is a template of your route.

Route example with placeholder:

{
    "homepage": {
        "path": "/hello/{name}",
        "method": "GET",
        "action": "DefaultController::sayHello"
    }
}

There we have placeholder called {name} and we can get this value in controller:

public function sayHello($name)
{
    echo "Hello, {$name}";
}

2019 © Cherry-project

统计信息

  • 总下载量: 70
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-03-05

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固