* 命名空間
* 先理解一個重要概念:程式碼重複使用
* 我們學習物件導向程式設計的終極目標是什麼? "程式碼重複使用"
# * 一、徹底理解程式碼重複使用機制?
## * **到目前為止,我們已經學到的程式碼重複使用的實作手段 * 1. 函數: 程式碼重複使用最簡單的方式; * 2. 類別與物件:將函數與它可能用到的資料封裝到一起; * 3. trait與介面:一種特殊的類別,本質是仍是函數與資料的封裝; * 4. 常數:因為常數具有一旦定義不可修改性,可以做到一次宣告,隨處呼叫,而值不會改變# * 二、徹底理解什麼是全局? * 1.全局其它就是指當前腳本,是不能跨腳本的,更不是指整個項目 * 2.全局與局部是一對雙胞胎兄弟,他們有一個共同的親爹:作用域,都由它管著 * 三、徹底理解php腳本中有哪些成員? * 1.變數:包括系統預置變數與使用者自訂變數; * 2.常數:包含系統預設常數,使用者自訂常數; * 3.函數:包含匿名函數/函數表達式/自執行函數; * 4.類別與物件:包括抽象類別,介面,trait; * 三、徹底理解什麼是作用域?#** ****作用域主要是針對變數 *****PHP中的變數有三種作用域: 函數作用域,全域作用域,超全域作用哉; * 1. 全域作用域: 在函數外部宣告,在函數內部不能直接使用 * 注意: 函數中使用全域變數必須用global宣告,或使用超全域陣列:$GLOBALS# * 2. 函數作用域:也就是局部作用域,包含函數的參數以及函數內宣告的變數,離開函數則自動清除; * 3. 超全域作用域: 除了在全域有效外,在函數內也可以不用宣告直接使用 * 四、為什麼要使用命名空間?# * 1.類別,函數,常數都是全域有效,包括在函數中也可以直接使用. * 2.因此,在全域中不允許有重名的類別,函數和常數。 * 3.如果想從外部導入一個函數庫或類別庫,他們的函數名稱,類別名稱極有可能與當前腳本衝突 * 4.所以,必須要有一套對於工作在全域範圍內的腳本成員,進行標識符命名衝突處理的機制。 * 5.命名空間就是這樣一套解決方案,他不僅可以讓用戶為全局成員起一個較短的名稱,又解決了 * 第三方資源的引入帶來的重名問題。 * 6.在沒有使用任何命名空間的情部下,所有類別,常數,函數全部宣告在全域空間,用\表,現在我們在 * 他們之前加上反斜線\之外,你會發現,執行結果也是正確的. * 宣告類別,常數,函數的時候,前面不需要加\,呼叫的時候才需要加上\ * 命名空間非常重要,如果不能徹底掌握,將會成為你以後學習的最大障礙!!!#