当前位置: 首页 > news >正文

html5网站免费开发软件制作平台

html5网站,免费开发软件制作平台,门户网站制作平台,网站建设制作设计推广php的autoload大致可以使用两种方法:__autoload和spl方法。这两种方法又各有不同的几种使用方法。 __autoload的使用方法1: 最经常使用的就是这种方法,根据类名,找出类文件,然后require_one 12345678function __autolo…

php的autoload大致可以使用两种方法:__autoload和spl方法。这两种方法又各有不同的几种使用方法。

 

__autoload的使用方法1:

最经常使用的就是这种方法,根据类名,找出类文件,然后require_one

1
2
3
4
5
6
7
8
function __autoload($class_name) {
    $path = str_replace('_''/', $class_name);
    require $path . '.php';
}
// 这里会自动加载Http/File/Interface.php 文件
$a = new Http_File_Interface();

这种方法的好处就是简单易使用。当然也有缺点,缺点就是将类名和文件路径强制做了约定,当修改文件结构的时候,就势必要修改类名。

__autoload的使用方法2(直接映射法)

1
2
3
4
5
6
7
8
9
10
11
12
13
$map = array(
    'Http_File_Interface' => 'C:/PHP/HTTP/FILE/Interface.php'
);
function __autoload($class_name) {
    if (isset($map[$class_name])) {
        require $map[$class_name];
    }
}
// 这里会自动加载C:/PHP/HTTP/FILE/Interface.php 文件
$a = new Http_File_Interface();
1
  
1
  
1
这种方法的好处就是类名和文件路径只是用一个映射来维护,所以当文件结构改变的时候,不需要修改类名,只需要将映射中对应的项修改就好了。

这种方法相较于前面的方法缺点是当文件多了的时候这个映射维护起来非常麻烦,或许这时候你就会考虑使用json或者单独一个文件来进行维护了。或许你会想到使用一个框架来维护或者建立这么一个映射。

spl_autoload

__autoload的最大缺陷是无法有多个autoload方法

好了, 想下下面的这个情景,你的项目引用了别人的一个项目,你的项目中有一个__autoload,别人的项目也有一个__autoload,这样两个__autoload就冲突了。解决的办法就是修改__autoload成为一个,这无疑是非常繁琐的。

 

因此我们急需使用一个autoload调用堆栈,这样spl的autoload系列函数就出现了。你可以使用spl_autoload_register注册多个自定义的autoload函数

 

如果你的PHP版本大于5.1的话,你就可以使用spl_autoload

先了解spl的几个函数:

clip_image001

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函数栈中,直接看一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*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中注册的调用函数, 看下面的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*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模块就使用了这个方法。摘录其中对应的代码

1
2
3
4
5
6
7
spl_autoload_register(array(__CLASS__, 'autoload'));
public static function autoload($class)
  {
    …..
  }
http://www.lbrq.cn/news/2760967.html

相关文章:

  • 关于微网站策划ppt怎么做网络营销有哪些推广方式
  • 网站建设虚拟优秀营销软文范例800字
  • 做网站php和java区别长沙网站快速排名提升
  • web制作网页代码排名优化公司口碑哪家好
  • 合肥公司建站模板爱站网关键词工具
  • 网页在线生成网站互联网推广是做什么的
  • 做外贸收费的网站广东搜索引擎优化
  • 网站建设推广找stso88效果好直播代运营公司
  • 东莞房价最新消息保定seo排名外包
  • 国贸做网站公司网络广告的发布方式包括
  • 网页小游戏显示插件不支持怎么办公司排名seo
  • 模块化网站建设一般多少钱百度信息流投放技巧
  • 用什么网站做封面最好企业网站推广有哪些方式
  • 门户网站建设平台企业网站建设公司
  • 施工企业组织机构图优化推广联盟
  • 垂直网站怎么做长春网站优化指导
  • 官方网站下载水印相机南宁seo外包平台
  • 做淘宝链接模板网站市场运营和市场营销的区别
  • 怎么扫码进入公众号刷网站seo排名软件
  • 昆明旅行社网站开发广点通广告投放平台
  • cnnic可信网站必须做吗企业全网推广公司
  • 网站降权怎么处理如何让网站被百度收录
  • 杭州网站建设设计百度搜索引擎
  • 东莞市住房和城乡建设局网站自媒体135网站免费下载安装
  • 温州网站建设接单网络推广大概需要多少钱
  • 网络营销策划创意案例点评百度关键词seo外包
  • pc网站做app京东沈阳seo博客
  • 网站建设与管理代码百度怎么做推广和宣传
  • 中国世界排名前100大学seo推广一年要多少钱
  • 网站建设的战略作用网页设计与网站建设教程
  • SQL详细语法教程(六)存储+索引
  • 【Java基础常见辨析】重载与重写,深拷贝与浅拷贝,抽象类与普通类
  • 微信小程序通过uni.chooseLocation打开地图选择位置,相关设置及可能出现的问题
  • 云计算- KubeVirt 实操指南:VM 创建 、存储挂载、快照、VMI全流程 | 容器到虚拟机(镜像转换/资源调度)
  • 跨越南北的养老对话:为培养“银发中国”人才注入新动能
  • Python 项目高频设计模式实战指南:从理念到落地的全景剖析