PHP __autoload()函数

当我们在写一个系统时,很多开发者喜欢每写一个类,就新建一个.php文件。当然也有人喜欢将类写在同一个文件下。但当系统太大,太繁琐时。写在同一个文件里,是行不通的。


当在一个PHP文件中需要调用另一个文件中声明的类时,就需要通过include把 这个文件引入。不过有的时候,在文件众多的项目中,要一一将所需类的文件都include进来,是一个很让人头疼的事,所以我们能不能在用到什么类的时 候,再把这个类所在的php文件导入呢?这就是我们这里我们要讲的自动加载类。


我想通过下面这些代码进行一次测试,我将两个不同的类写在两个不同的.php文件下。它们分别是:index2.php与index3.php。但它们在统一目录下:

For example:

index3.php

    class  test{
        private $var1;
        private $var2;
        private $var3;

        public function __construct($var1,$var2,$var3){
            $this->var1=$var1;
            $this->var2=$var2;
            $this->var3=$var3;
        }

        public function hello(){
            return "var1:".$this->var1." "."var2:".$this->var2." "."var3:".$this->var3;
        }
    }   

下面我想通过index2.php来访问index3.php中的内容;

index2.php

访问方法一:

//为了防止输出乱码
header("Content-type:text/html;charset=utf-8");

function  __autoload($classname){
    require $classname.".php";
}

__autoload("index3");

$T=new test("小红","小明","小樱");
echo $T->hello();
output:   var1:小红 var2:小明 var3:小樱

访问方法二:

    class index2{
        private $name;
        private $age;
        private $sex;

        public function __construct($name,$age,$sex){
            $this->name=$name;
            $this->age=$age;
            $this->sex=$sex;
        }

        public function information(){
            return "我的名字是:".$this->name."我的年龄是:".$this->age."我的性别是:".$this->sex."<br>";
        }

        public function __autoload($classname){
            return require $classname.'.php';
        }
    }

    $i=new index2("小倩", 25, "女");
    echo $i->information();
    $i->__autoload("index3");
    $T=new test("小红","小明","小樱");
    echo $T->hello();
output:  

我的名字是:小倩我的年龄是:25我的性别是:女
var1:小红 var2:小明 var3:小樱

参考目录:http://www.php-note.com/article/detail/44

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值