前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有关 php __autoload 自动加载类函数的用法

有关 php __autoload 自动加载类函数的用法

作者头像
1_bit
发布2020-10-23 14:20:24
6090
发布2020-10-23 14:20:24
举报
文章被收录于专栏:我的知识小屋我的知识小屋

这个函数是一个自动加载类函数,啥事自动加载函数,顾名思义 ,那就是自己就会加载类的函数(原谅我废话了)

我们先看下面的代码:

代码语言:javascript
复制
<?php
function __autoload($classname) {
 echo "helloworld";
} 

$obj = new Test1();

以上代码我们定义了一个自动加在类函数 __autoload,传入参数是$classname,记住,这里需传参,手册里面的函数说明如下:

代码语言:javascript
复制
void __autoload ( string $class )

我们需在此传入参数。我们的自动加载类函数里面输出了hellworld,这个应该是没有问题的。

我们接着看我们的代码 $obj = new Test1(); 在这里,我们并没有写上类Test1,那么我们执行以下代码看看:

运行结果
运行结果

以上是运行结果,发现自动输出了hellworld,在这里只有__autoload 代码有输出了hellworld。说明我们的antoload在未调用的情况下调用了。

在这里,我要说明以下,我们antoload函数会在我们在加载未定义的类的时候触发,而我们并没有定义Test1这个类,所以在此触发了。唔这样说应该明白了 =。=。。。

现在我们来尝试修改成以下修改这个代码:

代码语言:javascript
复制
<?php
function __autoload($classname) {

 $classfile = $classname . '.php';  
 if ( is_file($classfile) ) {  
  require_once($classfile);  
  }

} 

$obj = new Test1();
$obj->TestFunction();

我在函数里面接收了 classname ,并且给了后缀名,然后用if判断文件是否存在,如果存在那么就调用TestFunction。 那么在此我们还需要在当前目录下新建一个这个类文件,文件名当然是和 classname 一样的,这个 classname 就是我们的Test1,在这里我们new Test1所以我们传入autoload的参数就是Test1,所以我们在这里新建一个Test的php文件,里面代码如下:

代码语言:javascript
复制
<?php
class Test1 { 

 function TestFunction() {
  echo 'hello world';
 }
}

然后我们在此运行:

运行结果
运行结果
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/02/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档