霜之哀伤/php-router

简单的PHP路由器,支持REST和反向路由。

2.0.4 2020-02-25 07:48 UTC

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

许可证

MIT许可证,https://open-source.org.cn/licenses/MIT