zoukankan      html  css  js  c++  java
  • spl_autoload_register()函数的作用

    复习__autoload的时候,看到了spl_autoload_register()这个函数。但是一下子没有弄明白,通过查资料我算是弄明白了。

    1.__autoload()    ——    自动加载函数

    我把很多个类文件以 类名.class.php的形式存放在class目录中,在class的同级目录中建立一个index.php。进入class目录里面分别建立class1.class.php、class2.class.php、class3.class.php文件,分别为里面的文件添加一下代码

    <?php
    //class1.class.php中
    class class1{
    	public function __construct(){
    		echo "class1";
    	}
    }
    ?>
    
    <?php
    //class2.class.php中
    class class2{
    	public function __construct(){
    		echo "class2";
    	}
    }
    ?>
    
    <?php
    //class3.class.php中
    class class3{
    	public function __construct(){
    		echo "class3";
    	}
    }
    ?>

    index.php文件中写入

    <?php
    function __autoload($classname){
    	$filename = "./class/".$classname.".class.php";
    	if(is_file($filename)){
    		include $filename;
    	}
    }
    
    $test1 = new class1();
    echo '<br/>';
    $test1 = new class2();
    echo '<br/>';
    $test1 = new class3();
    
    //结果是
    class1
    class2
    class3
    
    ?>

    我们成功的自动加载了class下面所有的要加载的类。

    2.spl_autoload_register()    ——    注册__autoload()函数

    class里面的文件不做任何改变,只是简单的改写一下index.php

    <?php
    // 写一个loadclass函数
    // loadclass函数不具备自动加载类的功能
    function loadclass($classname){
    	$filename = "./class/".$classname.".class.php";
    	if(is_file($filename)){
    		include $filename;
    	}
    }
    // spl_autoload_register()函数让这个loadclass具备了自动加载类的功能
    spl_autoload_register("loadclass");
    
    $test1 = new class1();
    echo '<br/>';
    $test1 = new class2();
    echo '<br/>';
    $test1 = new class3();
    ?>

    至于性能上面,我没有过多的发言权,发现很多框架里面都是用的spl_autoload_register(),既然大家都用自然有他的道理,我先留着这个疑问吧。

  • 相关阅读:
    django 数据库内容管理(admin)
    django QuerySet的缓存机制(高效使用)
    Uniapp 离线打包
    idea启动Tomcat时控制台中文乱码问题
    windows 在服务中启动tomcat 配置jvm参数
    new File("E:") 文件路径变成项目所在的文件夹
    window10 开启ftp服务端
    MySQL没有默认my.ini文件
    mysql5.7 修改sql_mode配置
    一台服务器,多个Tomcat运行相同的系统,一个浏览器访问时cookie相互影响
  • 原文地址:https://www.cnblogs.com/void9main/p/13704843.html
Copyright © 2011-2022 走看看