php的namespace
A. php命名空間namespace \app為什麼前面不能加\
使用的時候加\代表後面是「絕對路徑的」命名空間
不使用/代表「相對路徑的」命名空間
這是在使用的時候。
namespace xxx 是聲明命名空間。命名空間名字自然不應該有\
B. php namespace下如何使用include '*.phar'包下的類
namespace a
include 'c.phar'
class b{
public function test{
$r=new c\d\foo();//
C. PHP 的use 命名空間 是什麼意思
有點類似於 java 中的包機制,用來解決重名問題的,每一個命名空間都是獨立的
給你舉個例子吧,比如我現在想寫兩個類,名字都叫 Action
<?php
namespaceA;//定義命名空間
classAction{
//..
}
namespaceB;//定義第二個命名空間
classAction{
//..
}
use 關鍵字用於導入某個命名空間下的類, 如果我在B空間內想使用A空間中的Action類,就需要導入這個類才能使用(當然也可以指明空間前綴來使用)
namespaceB;
//在本空間中需要使用A空間中的Action類,使用use導入
useAAction;//導入,如果本空間中也有一個Action會出現錯誤,因為類重名了
useAActionasA_Action;//通過取別名的方式解決
$var=newA_Action;
D. php命名空間的引入問題 include namespace
include函數是引入文件
命名空間解決的是同一腳本下相同函數重名,不同的命名空間命名,相當於處於不同的模塊,解決同一腳本下php函數重名的致命錯誤
你之前include引入的時候你的2個文件的相同函數處於不同命名空間下,就算在同一腳本也不會報錯
看你最後段代碼,你連續定義了2個命名空間,第1個就沒用了,相當於你在namespace FooBarsubnamespace;命名空間下寫了之後的代碼,但是之後的代碼處於namespace FooBarsubnamespace;下但是出現了2個相同名的函數,自然報錯
你要區分命名空間和include就要先懂得他們代表的意思,從你的問題可以看出你不太懂命名空間,建議你網路或者看下php手冊上的命名空間,自己捉摸比別人教理解得更加深刻
建議你把namespace FooBarsubnamespace;寫到const FOO = 2;上面