Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP5.3.0中包含同一名称空间中的视图文件_Php_View_Namespaces_Include - Fatal编程技术网

在PHP5.3.0中包含同一名称空间中的视图文件

在PHP5.3.0中包含同一名称空间中的视图文件,php,view,namespaces,include,Php,View,Namespaces,Include,我开始在PHP5.3.0上为static关键字开发某种mvc框架,但既然我在这里,我就说我也应该利用名称空间 所以我有这样的观点: namespace view { function load($filepath) { include($filepath); } function helper() { echo 'lorem ipsum'; } } view\load('view.php'); 现在让我们假设my

我开始在PHP5.3.0上为static关键字开发某种mvc框架,但既然我在这里,我就说我也应该利用名称空间

所以我有这样的观点:

namespace view
{
    function load($filepath)
    {
        include($filepath);
    }
    function helper()
    {
        echo 'lorem ipsum';
    }
}
view\load('view.php');
现在让我们假设my view.php如下所示:

<?= helper() ?>
namespace view {
    class Template { 
        public function load($filepath) { 
            include($filepath);
        }

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

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

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

你知道如何做到这一点吗?问题的标题是,在同一名称空间中包含一个文件,在该名称空间中进行包含


请注意,我不需要针对这个确切的代码场景的解决方案,为了让您理解我的问题,它被简化了。

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

namespace view;
helper(); // works 
请注意,使用
use view\helper导入
helper
仅导入类名和其他名称空间的作品

编辑:从函数中调用
include()
仍会将当前作用域导出到包含的文件中,因此您可以执行以下操作:

<?= helper() ?>
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();

我将实现自动加载类,而不是使用“load”方法加载它们。我也不明白为什么不能将所有view.php文件放在同一个名称空间中