本文主要是介绍慕课网----大话PHP设计模式 一(命名空间,类的自动加载,PSR-0),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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的规范。
这篇关于慕课网----大话PHP设计模式 一(命名空间,类的自动加载,PSR-0)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!