首页
VIP观影
美女套图
留言板
好友导航
推荐
影视在线
IDC销售
常用工具
高清壁纸
娱乐直播
Search
1
关于【套图】贡献者说明
6,599 阅读
2
利用CSS改变图片显示风格的方法 filter
3,706 阅读
3
女神朴信惠(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤
3,035 阅读
4
WJSSK_myfriend 我的好友(导航插件) 相关说明
1,638 阅读
5
随机小姐姐跳舞视频(6362个),源码分享
1,327 阅读
随笔
技术源码
Typecho
php
Vue
微信
资源分享
Happy 分享
好看的电影
好看的电视剧
登录
/
注册
Search
标签搜索
php
IDC
智简魔方
财务系统
主题
vue
Easypanel
centos
typecho
mqtt
宝塔bt
typecho插件
函数
云服务器
Kangle
docker
JavaScript
mosquitto
mosquitto-cluster
mosquitto-auth-plug
登录
Or
注册
累计撰写
128
篇文章
累计收到
321
条评论
首页
栏目
随笔
技术源码
Typecho
php
Vue
微信
资源分享
Happy 分享
好看的电影
好看的电视剧
页面
VIP观影
美女套图
留言板
好友导航
推荐
影视在线
IDC销售
常用工具
高清壁纸
娱乐直播
搜索到
1
篇与
自动加载
的结果
2022-07-02
PHP中spl_autoload_register() 函数详解
spl_autoload_register函数是实现自动加载未定义类功能的的重要方法,所谓的自动加载意思就是 我们的new一个类的时候必须先include或者require的类文件,如果没有include或者require,则会报错。那这样我们就必须在文件头部写上许多include或require文件,非常麻烦;为了使得没有include或者require类的时候也正常new一个类,所以有了自动加载的概念,也就是说new一个类之前不用事先包含类文件也可以正常new,这样我们的文件头部就不用包含许多include或require。其实这算一种封装!{dotted startColor="#ff6c6c" endColor="#1989fa"/}用spl_autoload_register函数可以实现上面说的功能,我们来看看实现原理。这个函数的参数如下: spl_autoload_register(autoload_function, throw, prepend) # autoload_function # 这是一个函数【方法】名称,可以是字符串或者数组(调用类方法使用)。这个函数(方法)的功能就是,来把需要new 的类文件包含include(requeire)进来,这样new的时候就不会找不到文件了。其实就是封装整个项目的include和require功能。 # throw # 此参数设置了 autoload_function 无法成功注册时, spl_autoload_register()是否抛出异常。 # prepend # 如果是 true,spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。{callout color="#a67cf3"}当我们new一个类,并且这个类文件没有被包含时候就会执行这个autoload_function方法:先来看一个错误例子:<?php //当我们直接new一个未包含class类文件时候会报错 $objDemo = new AutoloadClass(); /** Fatal error: Uncaught Error: Class 'AutoloadClass' not found in E:\work\demo\spl\autoloadDemo.php on line 3 Error: Class 'AutoloadClass' not found in E:\work\demo\spl\autoloadDemo.php on line 3 */ ?>使用spl_autoload_register方法<?php //文件 autoloadClass.php ,需要new的文件 class AutoloadClass{ public function __construct() { echo '你已经包含我了'; } } //文件autoloadDemo.php文件 spl_autoload_register('myAutoLoad', true, true); function myAutoLoad($className){ echo "所有的包含文件工作都交给我!\r\n"; $classFileName = "./{$className}.php"; echo "我来包含!{$classFileName}\r\n"; include "./{$className}.php"; } $objDemo = new AutoloadClass(); /** 输出: 所有的包含文件工作都交给我! 我来包含!./AutoloadClass.php 你已经包含我了 */ ?>{/callout}通过上面例子我们可以看到,当new一个未包含的类时候,会去执行spl_autoload_register第一个参数函数名的函数,这个函数有一个参数就是需要new的类名,这个函数的功能就是把这个类给包含进来(类名和文件名一致),这样就实现了自动加载功能。原理就是这样,不是很复杂。另外我们可以改为匿名函数来实现:<?php spl_autoload_register( function ($className) { echo "所有的包含文件工作都交给我!\r\n"; $classFileName = "./{$className}.php"; echo "我来包含!{$classFileName}\r\n"; include "./{$className}.php"; }, true, true); $objDemo = new AutoloadClass(); /** 输出: 所有的包含文件工作都交给我! 我来包含!./AutoloadClass.php 你已经包含我了 */ ?>
2022年07月02日
34 阅读
0 评论
0 点赞