我正在使用我的脚本将旧版链接转换为seo友好网址。
的index.php
tree_list[[1]]
AltoRouter.php
require 'AltoRouter.php';
$router = new AltoRouter();
$router->setBasePath('/router');
$urls = [
'index.php?option=com_index&task=articles&id=1',
'index.php?option=com_index&task=articles&slug=1-article-title',
'index.php?option=com_index&task=articles.category&cid=100-category1',
'index.php?option=com_shop&task=products&slug=100-amazing-product',
];
foreach($urls as $i=>$url) {
echo $router->getSefUrl($url);
}
我的问题:每当我使用 getSefUrl 方法时,我都会从外部文件加载路由。好吗?或者我可以优化某种代码吗?如果是的话 - 怎么样? 谢谢!
答案 0 :(得分:1)
你可以通过打破它来避免循环中的多个提取和解码。
在AltoRouter.php中
private $routes = array();
function getComponentRoutes($component)
{
if(! isset($this->routes[$component])) {
$path = 'components/'.$component.'/routes/routes.json';
$this->routes[$component] = json_decode(file_get_contents($path));
}
return $this->routes[$component];
}
答案 1 :(得分:0)
您可以使用require_once替换所需的内容,或者更好地使用自动加载:
您可以定义一个自动调用的__autoload()函数 如果您正在尝试使用尚未使用的类/接口 定义了。通过调用此函数,脚本引擎被赋予了一个 在PHP失败并错误之前加载类的最后机会。
创建一个文件夹并将所有必需的类放在此文件夹中:
function __autoload($class) {
require_once "Classes" . $class . '.php';
}