霜之哀伤 / php-router
简单的PHP路由器,支持REST和反向路由。
2.0.4
2020-02-25 07:48 UTC
Requires
- php: ^5.4.0|^7.0
- fig/http-message-util: ^1.1
Requires (Dev)
- malukenho/docheader: ^0.1.5
- phpunit/phpunit: 4.8.*
- squizlabs/php_codesniffer: 2.*
This package is not auto-updated.
Last update: 2024-10-02 06:24:04 UTC
README
一个简单的受Rails启发的PHP路由器类。
- 不同HTTP方法的使用
- REST / 资源路由
- 使用命名路由进行反向路由
- 动态URL:使用URL段作为参数。
作者
使用 composer 容易安装
$ composer require frostbane/php-router
用法
友好URL
如果您使用Apache并已启用mod_rewrite,请在根目录创建一个简单的 .htaccess 文件。
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)$ index.php [NC,L]
如果您使用nginx,请按照以下设置您的服务器部分
server {
listen 80;
server_name mydevsite.dev;
root /var/www/mydevsite/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_intercept_errors on;
}
}
这是路由器作用的简单示例
<?php
require __DIR__.'/vendor/autoload.php';
use PHPRouter\RouteCollection;
use PHPRouter\Router;
use PHPRouter\Route;
$collection = new RouteCollection();
$collection->attachRoute(new Route('/users/', array(
'_controller' => 'someController::usersCreate',
'methods' => 'GET'
)));
$collection->attachRoute(new Route('/', array(
'_controller' => 'someController::indexAction',
'methods' => 'GET'
)));
$router = new Router($collection);
$router->setBasePath('/PHP-Router');
$route = $router->matchCurrentRequest();
var_dump($route);
从 yaml
文件加载路由器
我们可以在一个 yaml
文件中定义我们应用的所有路由。当我们需要 迁移、修改 或稍后 添加 新的路由时,这简化了我们的工作。
路由定义应遵循以下示例
base_path: /blog
routes:
index: [/index, someClass.indexAction, GET]
contact: [/contact, someClass.contactAction, GET]
about: [/about, someClass.aboutAction, GET]
在我们的 前端控制器 中会有类似以下的内容
<?php
require __DIR__.'/vendor/autoload.php';
use PHPRouter\RouteCollection;
use PHPRouter\Config;
use PHPRouter\Router;
use PHPRouter\Route;
$config = Config::loadFromFile(__DIR__.'/router.yaml');
$router = Router::parseConfig($config);
$router->matchCurrentRequest();
更多信息
如果您喜欢PHP Router,您可能也会喜欢 AltoRouter。