首页 / PHP / php – 这个自动加载功能如何?
php – 这个自动加载功能如何?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 这个自动加载功能如何?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2310字,纯文字阅读大概需要4分钟。
内容图文
![php – 这个自动加载功能如何?](/upload/InfoBanner/zyjiaocheng/791/4701362152df4967819a586a23b55602.jpg)
这是我的自动装载机课程.我从本周开始学习PHP.我从不同的文章和PHP动作书中得到了自动加载器的想法,但我不知道它实际上是如何运作的?
class autoloader {
public static $loader;
public static function init()
{
if(self::$loader == NULL) {
self::$loader = new self();
}
return self::$loader;
}
public function __construct()
{
spl_autoload_register(array(this, 'library'));
spl_autoload_register(array(this, 'controller'));
spl_autoload_register(array(this, 'helper'));
spl_autoload_register(array($this, 'model'));
}
public function library($class)
{
set_include_path(get_include_path() . PATH_SEPARATOR . '/lib');
spl_autoload_extensions('.php');
spl_autoload($class);
}
public function controller($class)
{
set_include_path(get_include_path() . PATH_SEPARATOR . '/controller');
spl_autoload_extensions('.php');
spl_autoload($class);
}
public function helper($class)
{
set_include_path(get_include_path() . PATH_SEPARATOR . '/helper');
spl_autoload_extensions('.php');
spl_autoload($class);
}
public function model($class)
{
set_include_path(get_include_path() . PATH_SEPARATOR . '/model');
spl_autoload_extensions('.php');
spl_autoload($class);
}
}
我想问一下这款自动加载器的功能究竟如何?
例如,如果我实现了一个位于lobrary文件夹下的类
如何处理这个完整的文件?
解决方法:
首先,当您实例化一个类时,它的构造函数会注册四个函数来处理类自动加载.
$autoloader = new autoloader();
他们每个人都会在自己的特定目录中查找文件.无需调用autoloader :: init()函数,因为所有自动加载函数都已通过实例化类注册.
然后,当你尝试实例化一个类时,如果PHP无法找到它,那么在失败之前它将运行函数,由spl_autoload_register()按照它们注册的顺序注册. (autoloader :: library(),autoloader :: controller(),autoloader :: helper()和autoloader :: model()),如果在该类可用之后,它将被实例化.
扩展您的示例,这里是一些代码片段:
<?php
include 'autoloader.php'; // in this file we have our autoloader class
$autoloader = new autoloader();
$libClass = new someLib();
当我们调用new someLib()时,PHP的自动加载机制将在include_path指令中提到的所有区域中查找文件’somelib.php'(!lowercase!).你看,每个函数都为这个指令添加了自己的位置
set_include_path(get_include_path() . PATH_SEPARATOR . '/controller');
这意味着名为“controller”的文件夹(位于根目录中)将添加到include_path中,然后spl_autoload()将在其中查找文件.所以你必须创建文件/lib/somelib.php并拥有一个名为’someLib’的类
希望这可以帮助
补充阅读:
spl_autoload_register
spl_autoload
内容总结
以上是互联网集市为您收集整理的php – 这个自动加载功能如何?全部内容,希望文章能够帮你解决php – 这个自动加载功能如何?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。