对于PHP的加载自动加载机制的使用说明

对于PHP的加载自动加载机制的使用说明
在PHP的开发过程中,如果你想从外部引入一个类,通常使用包含和要求的方法来定义包含的类文件,但是这可能使在新的脚本文件中,有大量的包含或需要的方法,如果不经意地出现遗漏错误,使得代码难以维护

自PHP5,的__autoload作为拦截的方法,可以自动包含类文件的引用,我们通常写:
复制代码代码如下所示:
功能__autoload($ className){
include_once $名。。类。php;
}

用户=新用户();

当PHP引擎试图实例化一个未知的类的操作,称为()方法,并__autoload在PHP不能加载所需的类的最后机会。因此,当上面的代码被执行,PHP引擎实际上执行我们__autoload方法,包括user.class.php文件。

抛出的异常在__autoload函数不能用catch语句块捕获并导致一个致命的错误。

如果使用PHP的CLI交互模式,则不会执行自动加载机制。

当你想用梨式的命名规则,如需要引入用户/ register.php文件,你也可以这样做:
复制代码代码如下所示:
加载
功能__autoload($ className){
文件大小= str_replace('_ ',directory_separator,$ className);
include_once 'php文件;
}
userregister美元=新user_register();
这种方法很方便,但是如果我们介绍在一个大的应用程序的多个类库,可能会有一些莫名其妙的问题,由于不同的类库加载机制。在PHP5的SPL标准库的介绍后,我们有一个新的解决方案,spl_autoload_register()函数。

这个函数的功能是登记功能为SPL __autoload函数堆栈和删除默认的__autoload()系统的功能。一旦呼叫spl_autoload_register()函数,当调用未定义的类,系统将调用顺序登记spl_autoload_register(所有)的功能,而不是自动呼叫__autoload()功能,例如电话用户/ register.php代替user_register.class.php:
复制代码代码如下所示:
我不加载
功能__autoload($ className){
include_once $名。。类。php;
}
加载
函数体($ className){
文件大小= str_replace(/,directory_separator,$ className);
include_once文件。'。php;
}
开始加载
spl_autoload_register('autoload);
userregister美元=新user_register();
当使用spl_autoload_register(),我们还可以考虑一个更安全的初始化调用方法,参照以下:
复制代码代码如下所示:
系统默认 / / __autoload功能
功能__autoload($ className){
include_once $名。。类。php;
}
/ / __autoload功能可用于加载SPL
函数体($ className){
文件大小= str_replace('_ ',directory_separator,$ className);
include_once文件。'。php;
}
/ /意外错误的加载函数名和默认的__autoload机制取消......尴尬
spl_autoload_register('_autoload,假);
容错机制
如果(假)= spl_autoload_functions(){
如果(function_exists('__autoload ')){
spl_autoload_register('__autoload,假);
}
}

在Unix / Linux环境奇技淫巧,如果你有多个小类,为了方便管理,都写在一个PHP文件,通过ln -s命令软链接的方式快速分发到多个不同的类的副本,然后通过加载机构加载。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部