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

举报
1_bit 发表于 2021/05/26 18:38:04 2021/05/26
【摘要】 这个函数是一个自动加载类函数,啥事自动加载函数,顾名思义 ,那就是自己就会加载类的函数(原谅我废话了) 我们先看下面的代码: <?php function __autoload($classname) { echo "helloworld"; } $obj = new Test1();123456 以上代码我们定义了一个自动加在类函数 __autolo...

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

我们先看下面的代码:

<?php
function __autoload($classname) {
 echo "helloworld";
} 

$obj = new Test1();
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

void __autoload ( string $class )
  
 
  • 1

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

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

运行结果

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

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

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

<?php
function __autoload($classname) {

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

} 

$obj = new Test1();
$obj->TestFunction();
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

<?php
class Test1 { function TestFunction() {
  echo 'hello world';
 }
}
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

然后我们在此运行:
运行结果

文章来源: i1bit.blog.csdn.net,作者:A757291228,版权归原作者所有,如需转载,请联系作者。

原文链接:i1bit.blog.csdn.net/article/details/56908219

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。