__autoload的使用方法1: 最经常使用的就是这种方法,根据类名,找出类文件,然后require_one
复制代码 代码如下:
function __autoload($class_name) {
$path = str_replace('_', '/', $class_name);
require_once $path . '.php';
}
// 这里会自动加载Http/File/Interface.php 文件
$a = new Http_File_Interface();
这种方法的好处就是简单易使用。当然也有缺点,缺点就是将类名和文件路径强制做了约定,当修改文件结构的时候,就势必要修改类名。
__autoload的使用方法2(直接映射法)
复制代码 代码如下:
$map = array(
'Http_File_Interface' => 'C:/PHP/HTTP/FILE/Interface.php'
);
function __autoload($class_name) {
if (isset($map[$class_name])) {
require_once $map[$class_name];
}
}
// 这里会自动加载C:/PHP/HTTP/FILE/Interface.php 文件
$a = new Http_File_Interface();
这种方法的好处就是类名和文件路径只是用一个映射来维护,所以当文件结构改变的时候,不需要修改类名,只需要将映射中对应的项修改就好了。
这种方法相较于前面的方法缺点是当文件多了的时候这个映射维护起来非常麻烦,或许这时候你就会考虑使用json或者单独一个文件来进行维护了。或许你会想到使用一个框架来维护或者建立这么一个映射。
spl_autoload
__autoload的最大缺陷是无法有多个autoload方法
好了, 想下下面的这个情景,你的项目引用了别人的一个项目,你的项目中有一个__autoload,别人的项目也有一个__autoload,这样两个__autoload就冲突了。解决的办法就是修改__autoload成为一个,这无疑是非常繁琐的。
因此我们急需使用一个autoload调用堆栈,这样spl的autoload系列函数就出现了。你可以使用spl_autoload_register注册多个自定义的autoload函数
如果你的PHP版本大于5.1的话,你就可以使用spl_autoload
先了解spl的几个函数:
spl_autoload 是_autoload()的默认实现,它会去include_path中寻找$class_name(.php/.inc)
Spl_autoload实现自动加载:
复制代码 代码如下:
/*http.php*/
<?php
class http
{
public function callname(){
echo "this is http";
}
}
/*test.php*/
<?php
set_include_path("/home/yejianfeng/handcode/"); //这里需要将路径放入include
spl_autoload("http"); //寻找/home/yejianfeng/handcode/http.php
$a = new http();
$a->callname();
Spl_autoload_register
将函数注册到SPL __autoload函数栈中,直接看一个例子:
复制代码 代码如下:
/*http.php*/
<?php
class http
{
public function callname(){
echo "this is http";
}
}
/*test.php*/
<?php
spl_autoload_register(function($class){
if($class == 'http'){
require_once("/home/yejianfeng/handcode/http.php");
}
});
$a = new http();
$a->callname();
spl_autoload_call
调用spl_autoload_register中注册的调用函数, 看下面的例子
复制代码 代码如下:
/*http.php*/
<?php
class http
{
public function callname(){
echo "this is http";
}
}
/*http2.php*/
<?php
class http
{
public function callname(){
echo "this is http2";
}
}
/*test.php*/
<?php
spl_autoload_register(function($class){
if($class == 'http'){
require_once("/home/yejianfeng/handcode/http.php");
}
if($class == 'http2'){
require_once("/home/yejianfeng/handcode/http2.php");
}
});
spl_auto_call('http2');
$a = new http();
$a->callname(); //这个时候会输出"this is http2"
spl_auto_register这个函数使得我们不使用__autoload,使用自定义的函数来进行自动加载成为可能。这个方法现在是经常使用到的。
Zend的AutoLoader模块就使用了这个方法。摘录其中对应的代码
复制代码 代码如下:
spl_autoload_register(array(__CLASS__, 'autoload'));
public static function autoload($class)
{
…..
}
建议参考文章:
关于zend的autoload机制,前面有篇文章https://www./article/31399.htm 有详细分析。
关于autoload的自动加载机制,这篇文章https://www./article/31279.htm说得非常详细,从底层开始分析。
相关推荐:
什么是seo网络推广seo顾问,seo网络推广员 ,ai20170119
AI一键生成文章网页版,让内容创作更简单高效
SEO学堂:开启数字营销新时代,全面提升网站排名与流量,文山ai营销推广方案
ChatGPT一经发布,便受到了用户的狂热追捧,引爆人工智能热潮,十代ai达人办公本
SEO快排还有效果吗揭秘快速排名的真相与未来趋势,ai人像波普
ChatGPT登录界面都不显示了?可能是这些原因导致的!,上海小学ai智能课
SEO这样做,轻松引爆流量,助力企业成长,无极标准网站优化好处
如何用AI写公众号文章?让创作更高效、更轻松
在线AI文章生成:内容创作新革命
SEO百度优化:让你的品牌在搜索引擎中脱颖而出,日照网站推广策划
SEO学费多少钱?揭秘SEO培训的投资价值与回报!,郴州网站推广多少钱一个
SEO难吗?揭秘SEO背后的真相,让你轻松上手!,大旺百度网站推广
怎么用AI写出高质量科普文章?揭秘新时代创作利器!
SEO新闻:2025年最新趋势与最佳实践,你不可错过的SEO战略,郑州网络营销推广的优势
SEO合同:确保您网站优化成功的关键保障,微博营销推广规则最新
SEO利用:让你的网站快速登顶,获取更多流量与客户!,延边小程序推广平台网站
ChatGPT宕机恢复时间如何解决用户焦虑与技术背后的故事,ai人工智能写作火山
ChatGPT+维护页面:您的智能助手之旅,安全、高效、无忧,奥特曼画图ai
《SEO教材:打造网站流量的核心利器,教你轻松SEO优化技巧》,咖啡网站建设总结文案
ChatGPT与讯飞:AI语音与智能对话的完美融合,ai直角变圆角
SEO就是:让你的品牌脱颖而出,获得更多曝光与流量,梅岭关键词排名优化
SEO可以帮助网站在搜索引擎中获得较高的排名-助力企业数字化转型的关键,赵立新AI换脸图片对比
SEO资讯:最新趋势,提升网站排名,快速突破流量瓶颈,廊坊seo推广咨询服务
AI网页生成:轻松构建智能网站,提升品牌竞争力,杭州专业ai智能教育
文字生成AI开启创作的新纪元
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
seo资源指的是什么,seo资料 ,绿眼AI
AI免费文章生成器:轻松创作高质量内容的终极工具
SEO代做:让你的企业轻松登顶搜索引擎,快速提升曝光率,seo 提高注册量
AI做文章:引领智能创作的未来
ChatGPT3.5最新版:智能对话新纪元,带你进入AI的未来世界,ai苔藓生长
SEO数量-如何提升你的网站排名与流量?,射阳seo优化五星服务
ChatGPT维护页面-背后的技术与用户体验,ai领域ppt
中文润色:提升表达的艺术,打造无懈可击的语言魅力,广告营销推广新思路论文
ChatGPT服务器坏了?了解背后的技术与应对策略,AI模块代表
seo网络推广是什么,seo网络推广是什么意思 ,ai哪里注音
产品经理seo是什么,产品经理seo是什么意思 ,ai政府公文写作 软件
优化型网站:提升企业竞争力的必备利器,重庆网站推广工作如何
怎么查一篇文章是不是AI写的?你需要这几个关键方法!
2025年整站SEO排名优化策略:让你的网站脱颖而出,id排版ai
SEO优化如何为网站做好关键词研究和优化,ai直通
SEO抢权:如何在竞争激烈的市场中占得先机,正规网站建设口碑好
ChatGPT为什么网址打不开?原因分析与解决方法,文档审核ai
ChatGPT支持多种语言输入输出,让全球资讯触手可及,联想拯救者的ai写作
如何查文章AI率?全面解析AI文章检测工具及技巧
SEO阶段解析:从入门到精通,助你站稳搜索引擎的前沿,网站建设特定开发
360ai答题-赋能教育,开启智能学习新纪元,ai 果汁
SEO前的准备工作:如何让网站为搜索引擎优化做好充分准备,SEO_网站排名优化_网络推广
打破创作边界,无限可能无限制生成文章的AI
seo需要什么器械,seo需要什么器械才能做 ,长续航ai纯电汽车