gpt4 book ai didi

php - 在 PHP 5.3.0 中包含相同命名空间中的 View 文件

转载 作者:行者123 更新时间:2023-12-04 16:54:02 24 4
gpt4 key购买 nike

我开始在 PHP5.3.0 上为 static 关键字开发一种 mvc framweork,但既然我在这里,我说我也应该利用命名空间。

所以我有这样的观点:

namespace view
{
function load($filepath)
{
include($filepath);
}
function helper()
{
echo 'lorem ipsum';
}
}
view\load('view.php');

现在让我们说我的 view.php 看起来像这样:
<?= helper() ?>

它不起作用,因为包含的文件出于某种原因在全局命名空间中,所以我不得不在 View 中编写 view\helper() ,这违背了目的。

你知道如何做到这一点吗?几乎问题标题是什么,将文件包含在发生包含的同一 namespace 中。

请注意,我不需要此 EXACT 代码场景的解决方案,它已被简化以便您理解我的问题。

最佳答案

我必须承认我还没有详细研究 PHP 的命名空间特性,但我认为这是不可能的。 included()除非您声明 view.php,否则文件将位于全局命名空间中。在同一个命名空间中:

namespace view;
helper(); // works

注意导入 helper使用 use view\helper; is not possible either因为只导入类名和其他命名空间的作品。

编辑 : 调用 include() from 函数内仍会将当前作用域导出到包含的文件,因此您可以执行以下操作:
namespace view {
class Template {
public function load($filepath) {
include($filepath);
}

function helper(){
echo 'lorem ipsum';
}
}

$a = new Template();
$a->load('test.php');
}
view.php :
$this->helper();

关于php - 在 PHP 5.3.0 中包含相同命名空间中的 View 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com