数码资讯
spl_autoload详解PHP
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
SPL有两个不同的功能,spl_autoload和spl_autoload_call,实施不同的自动加载机制autoload_func指出这两种不同的函数地址。
spl_autoload是SPL执行默认的自动加载功能,它的功能很简单,它可以接收两个参数,第一个参数是class_name美元,这类的名字,第二个参数file_extensions美元是可选的,表示的类文件扩展名title=延伸>扩展,你可以指定多个延伸title=延伸>扩展file_extensions美元,保护展览名称用分号;如果没有指定,将使用默认扩展名title=延伸>扩展。公司or.php.spl_autoload第一圈class_name美元为小写,然后寻找美元所有的class_name.inc美元class_name.php文件包含路径(如果没有file_extensions美元参数指定),如果发现,它加载的类文件,你可以手动使用spl_autoload(人。类。PHP)加载的人类。事实上,它类似于要求 /包括,它可以指定一些扩展title=扩展>扩展。
如何使spl_autoload自动工作,即点autoload_func到spl_autoload答案是使用spl_autoload_register功能。当第一个打电话给spl_autoload_register()在一个PHP脚本不使用任何参数,你可以点到spl_autoload autoload_func。
我们知道,spl_autoload具有简单的功能上面的描述,它是在SPL扩展实现,我们不能扩展它的功能。如果你想实现你自己的更灵活的自动加载机制在这一点上,spl_autoload_call闪烁的功能。
让我们在对spl_autoload_call.in SPL模块的实现的奇迹,一看,一个全局变量autoload_functions,它本质上是一个哈希表,但我们可以简单地视为一个链接列表,列表中的每个元素是一个函数指针指向一个具有自动加载功能,spl_autoload_call实现本身很简单,只是为了在列表中执行每个函数,每个函数执行后,法官需要类完成已经加载,如果加载成功直接返回,不再继续在列表中执行其他功能。如果此列表中的所有的功能没有被加载后,所有的功能都完成了,spl_autoload_call将退出直接和不报告E误差的用户。因此,对加载机制的使用并不能保证类可以自动自动加载。关键是看你的自动加载功能是如何实现的。
标准库的方法spl_autoload PHP5中相当于实现自己的__autoload
复制代码代码如下所示:
< PHP
功能__autoload($ className){
如果(is_file($名。'。'/library/loader.php'){)
美元包括类名,PHP的;
} elseif(is_file($名。'公司'){ {)
包括$名。'公司';
}
}
它会自动搜索A.php /。具有相同名字的注册目录名美元的公司文件。当然,你也可以指定一个特定类型的文件,方法是登记的延伸
复制代码代码如下所示:
< PHP
spl_autoload_extensions('。PHP。公司。一些');
在这种方式中,它也会寻找一些文件。默认情况下,PHP不启动spl_autoload,怎么spl_autoload自动生效该方法是
复制代码代码如下所示:
< PHP
spl_autoload_register();
有一spl_autoload_register美元回调参数。如果没有指定,它将自动登记spl_autoload。为了寻找更多自动加载目录,您可以在这些代码前面设置自动加载目录。
复制代码代码如下所示:
< PHP
set_include_path(get_include_path()。path_separator。 /路径。directory_separator);
这样,当PHP没有找到指定的类,它会在指定的目录中找到set_include_path。
PHP框架中经常使用这些方法:
复制代码代码如下所示:
< PHP
set_include_path(get_include_path()。path_separator。 /路径。directory_separator);
spl_autoload_extensions('。PHP。公司。一些');
spl_autoload_register();
当你的负荷低于一些 /路径的类的类,它会寻找目录classa.php或classa.inc或classa.some,所以你可以放心地使用新的类或扩展类。
复制代码代码如下所示:
< PHP
B {课堂延伸
…
}
美元=新课堂;
$ =新B;
spl_autoload是SPL执行默认的自动加载功能,它的功能很简单,它可以接收两个参数,第一个参数是class_name美元,这类的名字,第二个参数file_extensions美元是可选的,表示的类文件扩展名title=延伸>扩展,你可以指定多个延伸title=延伸>扩展file_extensions美元,保护展览名称用分号;如果没有指定,将使用默认扩展名title=延伸>扩展。公司or.php.spl_autoload第一圈class_name美元为小写,然后寻找美元所有的class_name.inc美元class_name.php文件包含路径(如果没有file_extensions美元参数指定),如果发现,它加载的类文件,你可以手动使用spl_autoload(人。类。PHP)加载的人类。事实上,它类似于要求 /包括,它可以指定一些扩展title=扩展>扩展。
如何使spl_autoload自动工作,即点autoload_func到spl_autoload答案是使用spl_autoload_register功能。当第一个打电话给spl_autoload_register()在一个PHP脚本不使用任何参数,你可以点到spl_autoload autoload_func。
我们知道,spl_autoload具有简单的功能上面的描述,它是在SPL扩展实现,我们不能扩展它的功能。如果你想实现你自己的更灵活的自动加载机制在这一点上,spl_autoload_call闪烁的功能。
让我们在对spl_autoload_call.in SPL模块的实现的奇迹,一看,一个全局变量autoload_functions,它本质上是一个哈希表,但我们可以简单地视为一个链接列表,列表中的每个元素是一个函数指针指向一个具有自动加载功能,spl_autoload_call实现本身很简单,只是为了在列表中执行每个函数,每个函数执行后,法官需要类完成已经加载,如果加载成功直接返回,不再继续在列表中执行其他功能。如果此列表中的所有的功能没有被加载后,所有的功能都完成了,spl_autoload_call将退出直接和不报告E误差的用户。因此,对加载机制的使用并不能保证类可以自动自动加载。关键是看你的自动加载功能是如何实现的。
标准库的方法spl_autoload PHP5中相当于实现自己的__autoload
复制代码代码如下所示:
< PHP
功能__autoload($ className){
如果(is_file($名。'。'/library/loader.php'){)
美元包括类名,PHP的;
} elseif(is_file($名。'公司'){ {)
包括$名。'公司';
}
}
它会自动搜索A.php /。具有相同名字的注册目录名美元的公司文件。当然,你也可以指定一个特定类型的文件,方法是登记的延伸
复制代码代码如下所示:
< PHP
spl_autoload_extensions('。PHP。公司。一些');
在这种方式中,它也会寻找一些文件。默认情况下,PHP不启动spl_autoload,怎么spl_autoload自动生效该方法是
复制代码代码如下所示:
< PHP
spl_autoload_register();
有一spl_autoload_register美元回调参数。如果没有指定,它将自动登记spl_autoload。为了寻找更多自动加载目录,您可以在这些代码前面设置自动加载目录。
复制代码代码如下所示:
< PHP
set_include_path(get_include_path()。path_separator。 /路径。directory_separator);
这样,当PHP没有找到指定的类,它会在指定的目录中找到set_include_path。
PHP框架中经常使用这些方法:
复制代码代码如下所示:
< PHP
set_include_path(get_include_path()。path_separator。 /路径。directory_separator);
spl_autoload_extensions('。PHP。公司。一些');
spl_autoload_register();
当你的负荷低于一些 /路径的类的类,它会寻找目录classa.php或classa.inc或classa.some,所以你可以放心地使用新的类或扩展类。
复制代码代码如下所示:
< PHP
B {课堂延伸
…
}
美元=新课堂;
$ =新B;
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。