namespacephp
1. Thinkphp中命名空間是怎麼做類文件引入的
thinkphp引入外部文件操作如下:
/*
類文件命名方式IDCheck.class.php
類文件裡面注意要命名空間,,例如在Think文件夾下面,就要命名為namespace
Think;
*/
/*
控制器裡面的寫法:
引入方法:use
Think\IDCheck;
然後再實例化該類,實例化方法:$ID
=
new
IDCheck();
*/
2. php命名空間的引入問題 include namespace
include函數是引入文件
命名空間解決的是同一腳本下相同函數重名,不同的命名空間命名,相當於處於不同的模塊,解決同一腳本下php函數重名的致命錯誤
你之前include引入的時候你的2個文件的相同函數處於不同命名空間下,就算在同一腳本也不會報錯
看你最後段代碼,你連續定義了2個命名空間,第1個就沒用了,相當於你在namespace FooBarsubnamespace;命名空間下寫了之後的代碼,但是之後的代碼處於namespace FooBarsubnamespace;下但是出現了2個相同名的函數,自然報錯
你要區分命名空間和include就要先懂得他們代表的意思,從你的問題可以看出你不太懂命名空間,建議你網路或者看下php手冊上的命名空間,自己捉摸比別人教理解得更加深刻
建議你把namespace FooBarsubnamespace;寫到const FOO = 2;上面
3. php命名空間 use使用的問題:
命名空間是運行時解析的。use就相當於一種聲明,並不解析和載入。在使用時就可以自動載入進來,那麼這里你就可以理解為把db這個類庫導入進來了,所以可以正常使用。
4. php 使用命名空間後,只能傳遞常量,無法傳遞變數,怎樣才能傳遞變數呢
經過測試變數是全局的....
我這邊測試可以 ..直接使用變數...
a.php
<?php
namespace n1;
$foo=1;
?>
b.php
<?php
namespace n2;
$foo=2;
?>
c.php
<?php
require "a.php";
require "b.php";
echo $foo;
?>
5. php命名空間的問題
php 的命令空間,和文件路徑無關。只要你的 autoload 函數能自動載入正確文件就行。當然,你也可以手動載入
6. PHP命名空間的類沒有發現問題,怎麼解決
//main.php
namespace main;
require_once "util.php";
use cominstanceutil;
class Debug {
static function sayHello(){
print("Hello,".__NAMESPACE__." ");
}
}
Debug::sayHello();
utilDebug::sayHello();
7. 關於php命名空間,在不同的文件夾可以申明相同的根命名空間嗎
可以的,使用命名空間PHP版本5.3以上
8. PHP命名空間動態調用類
不是這樣調用的,命名空間只是一中命名的方式,跟調用沒有直接聯系。用auto_load()載入
9. php命名空間namespace \app為什麼前面不能加\
使用的時候加\代表後面是「絕對路徑的」命名空間
不使用/代表「相對路徑的」命名空間
這是在使用的時候。
namespace xxx 是聲明命名空間。命名空間名字自然不應該有\