phpautoload
PHP Autoload(自动加载)是一种开发技术,允许PHP程序员在编写程序的过程中,使用其他文件中的PHP类,而无需显式地在当前文件中包含,从而更方便地创建面向对象应用程序。
在php中,如果一个应用程序使用的类很多,为每个类定义一个文件必须包含很多include或require_once语句,由于操作繁琐,所以PHP提供了一种更简便的方式——Autoload机制。
Autoload机制是这样一种机制:在使用某个类的时候,当前文件中不用包含它,而是由PHP自动加载该类定义所在的文件。
Autoload机制可以使写程序更轻松,避免重复性劳动,提高工作效率。另外,一个类可以被多个文件使用,只需要改变该类的名称即可,而不需要改变代码中的include和require_once的内容。
要实现程序自动加载类,PHP提供了一个函数spl_autoload_register,可以将一个或多个自动加载函数注册给PHP。当需要加载某个类时,PHP会遍历已注册的函数,寻找对应的类定义。
要使用spl_autoload_register函数注册一个自动加载函数,需要先实现一个函数,有参数$className:
function myAutoload($className)
{
// 加载类的逻辑
}
有了自动加载函数之后,就可以使用spl_autoload_register函数来注册它给PHP了:
spl_autoload_register('myAutoload');
注意,在PHP 5.3/5.4之前的版本中是使用__autoload函数来实现的,现在PHP已经不再推荐使用,请改为使用spl_autoload_register函数。
spl_autoload_register('myAutoload')函数可以注册多个自动加载函数,比如:
spl_autoload_register('myAutoload1');
spl_autoload_register('myAutoload2');
当程序需要加载某个类时,PHP会按照顺序来依次遍历注册的每个函数,寻找对应的类定义文件。
实现Autoload机制也可以使用类的自动加载机制,我们可以在__autoload方法中实现该机制,如:
function __autoload($className)
{
// 加载类的逻辑
}
实现这种机制,只需要在合适的位置定义__autoload方法,当PHP需要加载某一类的实例时,会自动调用__autoload函数。要注意,__autoload实现类的自动加载机制时,不但可以加载自定义的类,也可以加载PHP系统自带的类,但这种使用方法不推荐。
利用Autoload机制,可以使PHP程序的创建变得更加轻松,不用再提前在文件中定义所有需要使用的类,只要在使用某个类时,PHP会自动加载相应的定义文件,而无需显式地在当前文件中包含。可以更方便地创建面向对象应用程序。