慕课网----大话PHP设计模式 一(命名空间,类的自动加载,PSR-0)

来源:互联网 发布:python抓BING图片 编辑:程序博客网 时间:2024/05/18 20:07

1.如果是相同的命名空间,就不能创建相同名字的类和函数了。会产生命名冲突。
2.调用对应命名空间的方法,先用require来引入,然后用Test1\test()的方式来引用。
3.类的自动载入:代码如下,这是被废弃的版本,因为可能一个php项目会有多个框架,然后都用__autoload的话,会导致命名冲突。但这个也是不错的方法。
__DIR__ 这个魔法变量是获取当前的目录,然后当程序里面调用对应的类的时候,发现没有引入过这个类的话,就会去吧这个类的名字传到__autoload这个方法里面,如这个例子的话,传来的$class参数是Test1或者Test2。然后加上.php的话就能实现自动载入了。
类的自动加载

在最新版本里面,官方出来的方法是spl_autoload_register()
这个方法的话也是基于autoload的,使用方式就是先写好上述的__autoload方法,然后

spl_autoload_register('\\Imooc\\Loader::autoload');

这样的方式去加载。如果有多个框架的话,就使用多次这个语句。
通过目录和类去判断哪个地方的自动载入。上面这个对应的路径是Imooc目录下的Loader类里面的autoload方法。

class Loader{    static function autoload($class){        // \\ 双反斜杠的话是因为反斜杠要进行转移的        //BASEDIR 是在index.php这个入口文件里面预定义的变量        require BASEDIR . '/' . str_replace('\\', '/', $class) . '.php';    }}

然后在入口文件index.php里面

define('BASEDIR', __DIR__);include BASEDIR . '/Imooc/Loader php';//先引入对应的文件,即类。然后通过下面那个spl的方法,来定义自动加载的类//spl php标准库spl_autoload_register('\\Imooc\\Loader::autoload');

4.PSR-0的规范。
PSR-0规范

0 0
原创粉丝点击