首页> 基础笔记 >PHP基础学习 >面向对象 面向对象

php面向对象之自动加载类

作者:小萝卜 2019-09-03 浏览 977

简介php面向对象之自动加载类,PHP5提供了一个__autoload()来解决这个问题。当new实例化一个不存在的类时,则自动调用此函数“__autoload()”,并将类名作为参数传入此函数。我可以使用这个实现类的自动加载。

php面向对象之自动加载类

在编写面向对象程序时,常规做法是将每一个类保存为一个PHP源文件。当在一个PHP文件中需要调用一个类时很容易就可以找到,然后通过include(或require)把这个文件引入就可以了。不过有的时候,在项目中文件众多,要一一将所需类的文件include进来,是一个很让人头疼的事。

PHP5提供了一个__autoload()来解决这个问题。当new实例化一个不存在的类时,则自动调用此函数“__autoload()”,并将类名作为参数传入此函数。我可以使用这个实现类的自动加载。

在组织定义类的文件名时,需要按照一定的规则,最好以类名为中心,加上统一的前缀或后缀形成文件名:class_student.php 或 student_class.php 或 student.php

实例1:
<?php   
    /**
        声明一个自动加载类的魔术方法__autoload()
        @param  string  $className 需要加载的类名称字符串
    */
    function __autoload($className) {  
        //拼装成类名对应的文件名,视具体定义规则而定
        $filename = strtolower($className).".class.php";
        //先判断类文件是否存在
        if(file_exists($filename)){
            //在方法中使用include包含类所在的文件,也可以使用require导入
            include($filename); 
        }else{
            die("自动加载{$className}类失败!");
        }
    }
  //User类不存在则自动调用__autoload()函数,将类名“User”作为参数传入
   $obj  = new User();   
  //Shop类不存在则自动调用__autoload()函数,将类名“Shop”作为参数传入
   $obj2 = new Shop();  
实例2:
<?php
//自动加载的使用

function __autoload($classname){
   //先判断类文件是否存在,再尝试调用。
   if(file_exists($classname.".class.php")){
     require($classname.".class.php");
   }
}

//require("Stu.class.php");

//当实例化一个不存在的类时,会尝试调用魔术方法__autoload()
$stu = new Stu("zhangsan",20);

echo $stu;

 

很赞哦! (0)

文章评论

    高端网站建设