一,分级命名空间
分级命名空间可以允许我们定义分级空间,来展示空间与空间之间的层级关系。
如有以下几个命名空间:
a. namespace _1011
b. namespace _1011\one
c. namespace _1011\two
通过定义分级命名空间,可以看出命名空间b和c都是a的分级空间,它们之间存在层级关系;
在调用分级空间里的元素时,由于分级空间名太长,容易因空间重名引起命名冲突,可以用关键字USE来给分级空间定义一个别名,如将上面的c空间定义一个别名,语法如下:
use namespace _1011\two as C;
使用use定义别名时,默认从全局开始;
如果省略as ,那么当前类的别名,就是当前类的去掉空间名称的类名;
二,类的自动加载
类的自动加载,主要通过动态改变引用 类 所在文件的文件名,实现自动引用类所在的文件,来实现类的自动加载;
如:在demo1文件中有个类class demo1,
class demo1{ public $name; public function __construct($name){ $this->name=$name; } public function get(){ echo $this->name; } }
点击 "运行实例" 按钮查看在线实例
需要在demo2中实现自动加载类demo1,就要在脚本文件demo2中实现对文件demo1的引用,通过处理要加载的类名来获取类所在的脚本文件路径,代码如下:
spl_autoload_register(function ($className) { $path = str_replace('\\', DIRECTORY_SEPARATOR, $className); $path = __DIR__ . '/' . $path.'.php'; include $path; });
点击 "运行实例" 按钮查看在线实例
对类demo1实例化,传入参数
得到输出结果:wcz
总结:类的自动加载前提是类名要与所在的脚本文件相同才可以;