0

我正在寻找一种我想通过 url 构建的动态模板引擎。因此,如果我的网址类似于 localhost/root/this/is/the/path/to/signup.php,则 php 代码应在 this/is/the/path/to/ 目录中监视文件 signup.php

这次我使用了 url 的数组,如下代码所示:

$url = isset($_GET['url']) ? $_GET['url'] : null;
$url = rtrim($url, '/');
$url = explode('/', $url);

if (empty($url[0])) {
    $url[0] = "path/startpage.php";
}

if (isset($url[2])) {
    require "path/error.php";
} else if (isset($url[1])) {

    $file1 = 'path/' .$url[0].'/'.$url[1].'/'.$url[1].'.php';

    if (file_exists($file1)) {
        require $file1;
    } else {
        require "error.php";
    }

} else if (isset($url[0])) {

    $file0 = 'path/'.$url[0].'/'.$url[0].'.php';

    if (file_exists($file0)) {
        require $file0;
    } else {
    require "path/error.php";
    }
}

但是有了这个脚本,我必须为每种情况都这样做,这不是很好。我想要一个解决方案,代码正在查找整个 url,转到目录并需要错误或文件(如果存在)。

请问你能帮帮我吗?

4

1 回答 1

0

Titon\View 库很容易处理这个问题:https ://github.com/titon/View

如果为模板传入一个路径数组,它将生成动态查找路径。https://github.com/titon/View/blob/master/src/Titon/View/View.php#L127

例子:

$view = new Titon\View\View();
$view->addPath('/path/to/views/');
$parsed = $view->run(['path', 'to', 'lookup/folder', 'templateName]);

还可以查看测试以查看它的实际效果:https ://github.com/titon/View/blob/master/tests/Titon/View/ViewTest.php

于 2013-07-31T20:10:19.510 回答