我只是在学习PHP的命名空间和我有没有工作一个非常简单的代码,我想知道为什么:PHP命名空间,使用命令
我们已经含有一个名称空间和功能n1.php
:
<?php
namespace app\cat1;
function echoo(){
echo "from cat 1";
}
?>
n2.php
:
<?php
namespace app\cat2;
function echoo(){
echo "from cat 2";
}
?>
现在
在index.php
我既包括n1.php和n2.php使用echoo
功能:
<?php
require_once('n1.php');
require_once('n2.php');
use app\cat1;
echoo();
?>
据我了解的命名空间,上面的代码应该工作,但它不是,我不知道为什么!?我告诉PHP使用app\cat1;
和被叫echoo()
功能,但我得到:
Fatal error: Call to undefined function echoo() in E:\xampp\htdocs\test\index.php on line 7
Ofcourse我可以做到这一点,这是要去工作:
<?php
require_once('n1.php');
require_once('n2.php');
//use app\cat1; <-- this is commented
app\cat1\echoo(); // <-- and now I'm using full path to run the echoo()
?>
上述工作,但现在有什么理由我们命名空间中有use
?
另一件事:我们怎样才能把命名空间在多个文件中像我上面那样,也不能使用include
方法?我在Laravel框架文件中看到了这种情况。文件只有use etc\blah
,没有包含,它工作得很好。那么这是如何发生的?
岂能单独的命名空间的文件,并把在多个文件中也不使用include方法?有没有办法呢?我看到这发生在Laravel框架文件中,它只使用'use'并且没有'include' – behz4d
我用底部的新问题更新了我的问题。 – behz4d
@ behz4d http://www.php-fig.org/psr/psr-4/ – hassan