我只是在學習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