infrajs / router
该软件包最新版本(v1.1.20)的许可信息不可用。
Infrajs 路由器
v1.1.20
2020-08-05 09:01 UTC
Requires
- akiyatkin/error: ~1
- infrajs/access: ~1
- infrajs/config: ~1
- infrajs/controller: ~1
- infrajs/env: ~1
- infrajs/nostore: ~1
- infrajs/path: ~1
- infrajs/update: ~1
README
包含
- 为第三方供应商提供包含符号 -~! 的短地址 - infrajs/config-search
- 自动安装扩展 - infrajs/update
- 扩展的 .infra.json 配置自动加载并在访问任何扩展类时执行 - infrajs/config
- 最简单的访问级别 test debug admin - infrajs/access
- 扩展的默认 HTTP 头部 - infrajs/nostore, infrajs/access
- 层控制器 index.json - infrajs/controller
使用
PHP 脚本的工作目录应该是项目根目录。这是与 infrajs/path 兼容的重要要求。可以使用标准的 PHP 函数 chdir 非常容易地更改工作目录
use infrajs\router\Router; use infrajs\path\Path; if (!is_file('vendor/autoload.php')) { chdir('../../../'); //Путь до корня проекта с папкой vendor/ require_once('vendor/autoload.php'); Router::init(); } $src = Path::theme('-plugin/test.php'); //vendor/name/plugin/test.php
如果已配置 .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ vendor/infrajs/router/index.php [L,QSA]
缩写将在地址栏中的 -test/test.php 上工作。可以从脚本中移除 Router::init()
、chdir()
和 vendor/autoload.php
,它们将已在 vendor/infrajs/router/index.php
中执行,该文件在 .htaccess
中指定。
use infrajs\path\Path; $src = Path::theme('-test/test.php'); //vendor/test/test.php
在脚本中初始化路由器
为了独立工作扩展,可以保留直接访问它的能力,不使用缩写 -,然后需要在代码中添加对 '''Router::init();''' 的调用。这是初始化和执行扩展的配置(.infra.json)及其依赖项所必需的。
if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once('vendor/autoload.php'); Router::init(); }
或最通用的选项
if (!is_file('vendor/autoload.php')) chdir('../'); require_once('vendor/autoload.php'); Router::init();
重定向请求到自己的 PHP 文件
从路由器的角度来看,所有找不到文件的请求都是 404 错误。因此,需要将 404 页面定义为 PHP 文件,所有请求都将指向该文件。需要在项目根目录中创建一个 .infra.json 文件。
{ "router":{ "404":"index.php" } }
仅针对缩写地址的 .htaccess
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/[-~\!]
RewriteRule ^(.*)$ vendor/infrajs/router/index.php [L,QSA]