dannyvankooten / php-router
此包已被废弃,不再维护。未建议替代包。
简单的PHP路由器,支持REST和反向路由。
1.2.0-alpha
2017-03-09 21:53 UTC
Requires
- php: ^5.3.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 auto-updated.
Last update: 2022-12-08 04:10:32 UTC
README
一个简单的Rails灵感的PHP路由器类。
- 不同HTTP方法的用法
- REST / 资源路由
- 使用命名路由进行反向路由
- 动态URL:使用URL段作为参数。
作者
使用composer轻松安装
$ composer require dannyvankooten/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。