sekidenkiku/file-router

简单的PHP路由类。

1.0.2 2019-05-11 09:52 UTC

This package is not auto-updated.

Last update: 2024-09-23 09:29:16 UTC


README

提供简单的URL分发功能。仅限于文件名的分发,无法通过GET、POST或URL查询进行分发。

特点

・可以自由指定页面的URL。
・可以将共通处理集中在index.php中。
・适用于小型网站。不适用于使用数据库的网站。

使用方法

1.请将.htaccess文件放置在网站的路径目录下。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
</IfModule>

2.请加载并执行类文件。

require_once('sekidenkiku/FileRouter.php');

$file_router = new FileRouter();
$file_router->setFilePath('template')
$file_router->addRoute('/', 'index.php');
$file_router->addRoute('/services', 'services.php');
$file_router->addRoute('/company', 'company.php');
$file_router->addRoute('/contact', 'contact.php');
$file_router->run();

如果通过composer安装,则无需require_once('sekidenkiku/FileRouter.php')。相反,请加载autoload.php。

require_once('vendor/autoload.php');

$file_router = new FileRouter();

安装方法

・直接读取文件时,请下载文件并使用require_once进行读取。

require_once('sekidenkiku/FileRouter.php');

・使用composer安装。

$ composer require sekidenkiku/file-router

许可证

MIT许可证

函数参考

FileRouter类

setSiteDir($dir)

设置网站的目录。路由信息的URL路径的基本目录。
默认值是'/'。开头和结尾的斜杠可以省略。不能为空字符串。
@param string $dir 目录名
@return void

将'/sub'设置为网站目录时,addRoute('/example', 'index.php')将匹配URL路径'/sub/example'。

getSiteDir()

返回网站的目录。
@param void @return string 网站的目录名。

setFilesDir($dir)

设置执行文件的目录。路由信息的执行文件安装目录。
默认值是'files'。
开头和结尾的斜杠可以省略。不能为空字符串。
@param string $dir 执行文件的目录。
@return void

默认情况下,路由目录下创建的files目录将作为执行文件目录。
请将执行文件放置在执行文件目录内。

路由目录
├ .htaccess
├ index.php
├ files目录
│ ├ 执行文件
・ ・
・ ・

getFilesDir()

返回执行文件的目录。
@param void
@return string 执行文件的目录。

addRoute($url, $file)

添加路由信息。
@param string $url 页面URL。开头的前斜杠可以省略。不能为空字符串。
@param string $file 执行文件名。为执行文件目录内的相对路径。开头的前斜杠可以省略。不能为空字符串。
@return void

getRoutes()

返回所有路由信息。
@param void
@return array 路由信息。

run($exit = true)

包含与路由信息匹配的执行文件。如果不匹配,则执行notFoundPage404函数。
@param bool $exit 如果为true,则在文件读取后结束处理。如果为false,则不结束。
@return void

getRoute($url)

返回与URL路径匹配的路由目标文件名。
@param string $url URL路径。
@return string 路由目标文件名。如果不存在,则返回空字符串。

addVar($name, $value)

添加可以在执行文件作用域中使用的值(执行文件引用值)。
@param string $name 键名。
@param mixed $value 值。
@return void

getVar($name)

获取执行文件引用值。
@param string $name 键名。
@return mixed|null 值。如果找不到键名,则返回null。

[静态函数]

FileRouter::getUrlPath()

从当前URL返回除主机名或查询字符串之外的路径部分。
@param void
@return string URL的路径名。

FileRouter::notFoundPage404($exit = true)

输出404 Not Found页面。
@param bool $exit 如果为true,则在页面显示后结束处理。如果为false,则不结束。
@return void

关于执行文件内的变量作用域

由于作用域不同,在index.php上定义的变量在执行文件内无法引用。
如果要引用,请通过getVar函数传递变量。可以在执行文件的$FileRoute->getVar函数中获取。

执行文件内变量

$FileRouter

说明:FileRouter类的子类实例。继承FileRouter类的属性。

执行文件内函数

在执行文件内可用的函数。可以作为$FileRouter的成员方法使用。

$FileRoute->getSiteDir()

返回设置的网站目录。 @param void
@return string 目录名

$FileRoute->getFilesDir()

返回执行文件的目录。
@param void
@return string 执行文件的目录。

$FileRoute->getRoutes()

返回所有路由信息。
@param void
@return array 路由信息。

$FileRoute->getRoute($url)

返回与URL路径匹配的路由目标文件名。
@param string $url URL。
@return string 路由目标文件名。如果不存在,则返回空字符串。

$FileRoute->getVar($name)

获取执行文件引用值。
@param string $name 键名。
@return mixed|null 值。如果指定了不存在的名称,则返回null。