infrajs/router

该软件包最新版本(v1.1.20)的许可信息不可用。

Infrajs 路由器

v1.1.20 2020-08-05 09:01 UTC

This package is auto-updated.

Last update: 2024-09-05 18:46:28 UTC


README

包含

使用

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]