$ G# `; ^) Z' K; S$ K/ K 6 T) H! L+ W4 C' Y7 S4 m0 M5 ]( U我们来详细的讲解一下PHP中的命名空间:4 c# u+ g# u) h
6 v7 w) e! p3 Q语法:namespac_e 空间名\空间名;' p; N# ~! t% Q v( o
1 v5 d+ d4 k# v- I( k5 G3 n
说明: 用于定义空间名;如果一个php文件中,第一个空间的定义义必须放在第1行。如果所要定义的空间已存在,则是进入空间。代码示例如下: 8 W' K/ r j, K: a' C( B3 W5 \2 u, m5 C
---------------------------------------------------------------------------- ( l. E. v$ U* g; J9 M) k+ N' z9 |/ x2 X2 `
<php! D- C+ a$ r# {, a( \
4 T! L- } |" v
namespoc_e AA;* p4 o# c- }2 f
functio_n showInfo(){8 S7 c4 J- s$ b: S$ {
echo __METHOD__,'<br/>';. Z9 k9 y9 ~3 \6 M) u- s4 o
} 7 D9 ~( O( V3 j! d; _showinfo(); & V0 d( a9 ]# J8 T3 U+ E9 A- h2 ]6 W, W/ p) g
namespoc_e AA\BB;( t g& [5 o: f8 Y+ z$ R
8 [' T2 M: o9 t; U$ u
functio_n showInfo(){ 5 Y0 T9 Q1 o/ }7 V- J/ O/ U echo __METHOD__,'<br/>';% R) h9 \' w* Y9 h' }
} $ ~7 B# X9 `& ]7 B//showInfo();! P0 I8 Q: v5 \3 O0 Z
----------------------------------------------------------------------------/ n& A0 y& s/ Y! q6 ?3 x, W: {+ k
2.空间成员:所谓空间成员就是,空间所影响的,空间只影响类、函数、常量(const) 1 E& P; c0 C% \8 p8 F- m" M& t' l. q! _& @
3.空间成员的访问:访问方式分为限定,非限定,完全访问,之间的区别,我们使用代码来说明一下。/ v% J9 y- g$ b) a( }
# r) u& c% V3 p/ d
---------------------------------------------------------------------------- % J% p: E+ _, N9 Y $ ?$ D4 }2 u9 _( l! F; _<php ; t: y+ v, E! anamespoc_e AA\BB;, B9 u, N, Q3 b; ~: D p# l
functio_n showInfo(){ & f; C8 H3 l) o echo __METHOD__,'<br/>'; % K+ y. ?; G5 r3 Q}& _. w4 s `0 ]% | ]7 @5 R2 D; k! n
namespoc_e CC; / l- ~5 E: v! I! v0 ? Nfunctio_n showInfo(){ ; K( l9 n0 o( G* l echo __METHOD__,'<br/>'; 3 `' u' |; p& f5 u3 D; y} 2 q/ ?: d$ D6 T3 L: s8 znamespoc_e AA; + B$ U% b) V, a Y- S! K$ F( j Wfunctio_n showInfo(){ 2 b1 K9 W" r r! o' k& D echo __METHOD__,'<br/>'; 2 @6 K: ]$ E2 d} 7 i V- ^; r, C: a- c7 c//非限定访问:用于访问当前空间中的成员 6 g# s$ t' [% i3 F% X- K! O$ ~showInfo();+ E2 N& N1 ~, x' U
//限定访问:只能访问当前所在的空间的子空间中的成员# `$ M& q1 d6 ?! H7 e; v
BB\showInfo();; X; X1 b/ H9 _/ l
//完全限定:可以访问其它所有的空间的成员) L# _) w; j2 k) P7 o0 [+ {8 \
\CC\showInfo(); ! e" | e5 v, E2 L↑根空间标识符0 }' U; r: a6 n' f; @1 ?( i
----------------------------------------------------------------------------3 F7 M! O. p: ]3 \
但是在实际的使用中,我们很多类和方法都是在不同的文件中,这就涉及到引入的问题,也就是在实际开发中,我们经常会在一个文件中引入另一个php文件。这种情况下有两种情况:8 O; g2 H0 ]& z4 x
" Q) x1 t3 n5 ]* B( Z. g! M4 V当前文件有空间的定义,被引入的文件中没有空间的定义,但是有空间成员。被引入的空间成员会被放在公共空间(根空间) & G& O# [0 i4 E% T5 K: b- I \( C, C4 X+ V0 j$ |代码示例如下:9 F9 Z) }8 r( y$ f5 |
4 {( m, G A0 @6 P
----------------------------------------------------------------------------$ l& F8 c, M3 v5 V/ E
7 {# p, [( y4 c' h& E$ X" _8 k( x
: l; V* T, D" e5 V
04inc.php7 G" P: V1 R/ I g0 n
<php6 ^, H2 ~8 U3 z; G: ?. N) s
2 Q1 n q3 m8 b+ O
namespoc_e Core; 8 @/ Z, N' I7 O, l: E. U" ~include '05ou.php'; 2 ?* o# P; O2 U$ n) m1 K2 ^new \AdminController();1 s a! G5 u6 H; A7 H P M% w
showInfo();3 U+ Y, g) w- F7 ~" Z/ S7 ~- A
& w% i; }, B1 q* C4 G! u& W
echo P;$ R8 J9 j- Y5 W9 Q& O5 [
//根空间中的成员,只要类的访问必须加‘/’' F) z% W% q4 p
---------------------------------------------------------------------------- 4 c4 H2 k* v+ ?) j$ \0 ^* r+ |! j y0 c8 p+ \9 Y
05ou.php , c8 G* L( F+ b4 R5 x: r% v8 M' a<php 2 ^2 |* }% I. ~+ K+ ~) Y, f9 f$ rconst P=5; 3 d; c) ?# m- X/ Y! C) p f4 y1 H# M+ G
functio_n showinfo(){% b7 R+ _# S- C* y5 `$ s) O5 z
echo __METHOD__,'<br/>'; 6 q7 c- M/ `9 {4 d; y; q3 \} * p' r8 U0 t3 D 6 C- I+ c! n1 ^8 M& Q$ Z2 h) ^7 Kclas_s AdminController{9 _" P2 M' Z9 p/ V F9 L1 T
public functio_n __construct(){ : {# F+ V$ o% G1 O echo __METHOD__,'<br/>';# @- r$ o) u" ]' c8 R2 {
}: w( U% P5 b1 }5 p7 {$ _
}6 K# g& _; ^3 s% R, U! k9 T
7 q9 |, f; M$ h a8 y0 j2 [第二种情况:当前文件有空间的定义,被引入的文件中有空间的定义,并不会中断当前空间的定义。' F2 y, s, k6 B& d. _+ ^
----------------------------------------------------------------------------! c+ W& d- {$ G$ J: u
04inc.php2 D5 a2 D) V- b l6 p3 v
<php: c) ~/ X& n+ S Q- m
# n$ c+ \8 t1 R: ynamespoc_e Core;1 P) m$ v1 a2 W; Z$ b$ L: ]
include '05ou.php';! f4 u1 W6 e0 U
functio_n showinfo(){. }& H* i: w' C. d1 C
echo __METHOD__,'<br/>'; 8 U5 W! L7 Q. n4 d( l; p& \}0 H* A6 Z- _3 I- d1 R# m. I( K
# l, y7 O8 j J1 J1 [new \Controller\AdminController;3 `+ K9 z6 z0 P6 j7 L' z0 q
---------------------------------------------------------------------------- . V8 i2 B% @5 ^: L05ou.php 6 i1 b) p6 m) n/ `4 z5 U<php - f4 M6 k- \+ Q' l8 vnamespoc_e Controller; ' |- }( @2 [, v3 }1 c3 ~) S* l7 }( o
clas_s AdminController{! {7 G) h0 b: M4 F9 e% D* p3 M
public functio_n __construct(){ : w+ _1 c2 L m3 @- d echo __METHOD__,'<br/>'; - d% `% E- j( _9 ]( e% B2 l6 R } & I; Z! U6 }- a# K}1 S, i* Y) v( ~( B1 E; j, w1 N% U
---------------------------------------------------------------------------- # o, g3 H2 D* v' L2 t9 R; o' U7 q; K' N* U
4.引入空间成员:: Q2 `& @! j o z2 V1 u- s