今天在阅读框架的时候发现了apl_autoload_register,我们再之前不使用apl_autoload_register的时候有一个__autoload的函数相信大家并不陌生,这是一个用于new一个对象的时候,获取不到对象的时候就会触发这个函数;用来自动加载这个类!而后来php版本在5.1.2后加入了apl_autoload_register函数,用来做自动加载,当前还有一个时代是没有自动加载的时代,据说大家在用到哪个类就要将这个文件引入,想想都很厉害,哈哈哈!
庆幸今天已经站在了巨人的肩膀上吧!
今天主要是说一下callable和callback,我在看到
//注册当前类中一个静态方法为自动加载函数 apl_autoload_register(['$this','autoloadClass']);
很奇怪啊!不是说传一个回调函数么?不是说好的是将一个函数注册成为自动加载函数么?这是什么鬼,于是我就查了一下手册,虽然没有全弄懂是应该也弄懂一半了吧!在这里分享一下!
callback和callable是完全相同的,从php5.4以后参数就可以指定类型了;当在函数中传参数时有多种情况!
这这里我只说一下我的理解,
spl_autoload_register('functionName');//当给函数传一个字符串时,这里就是函数的名称;
如果这个函数在类里,而你在类外面要使用的时候该怎么办呢!
//当给函数传一个数组时,数组的第一个是类名,数组第二个元素是方法名称;这样的使用方式要求方法必须是静态的; spl_autoload_register(['className','functionName']);
当然你要是还想传字符串,当然没有关系;
//可以使一个类名静态调用方法名的字符串;这个要求php版本高于5.2.3 spl_autoload_register('className::functionName');
不觉得这种多样化得方式很灵活么?如果你还不觉得,那就给你调用个父级的方法!
假设B类继承A类,都有相同方法a我们也可以这么写:
//这个使用方法要求php版本高于5.3.0 spl_autoload_register(['B','parent::a']);
总之想怎么怎么用!不会用?只能是掌握的太少!高手,都是想怎么用就怎么用!