* 命名空间

* 先理解一个重要概念:代码复用

* 我们学习面向对象编程的终极目标是什么? "代码复用"

* 一、彻底理解代码复用机制?

* **到目前为止,我们已经学到的代码复用的实现手段

* 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.在没有使用任何命名空间的情部下,所有类,常量,函数全部声明在全局空间,用\表,现在我们在

* 他们之前加上反斜线\之外,你会发现,执行结果也是正确的.

* 声明类,常量,函数的时候,前面不需要添加\,调用的时候才需要添加\

* 命名空间非常重要,如果不能彻底掌握,将会成为你以后学习的最大障碍!!!

09-02 09:16