zoukankan      html  css  js  c++  java
  • php 函数__autoload与spl_autoload_register理解

    理解自:http://www.cnblogs.com/myluke/archive/2011/06/25/2090119.html

    __autoload的作用:当我们在一个页面使用其他文件的类方法时候,经常使用的是require ,require_once ,include,include_once,

    比如我们有data.php 

    <?php
    class Data {
        public static function delData() {
            var_dump('del data');
        }
    }

    当我们想在person.php中使用data.php的内容时,可以这样

    <?php
    class Data {
    public static function delData() {
    var_dump('del data');
    }

    public static function catchData() {
    echo '我就和你嘿嘿嘿';
    }
    }

    但是,如果有100个界面时,我们还都要一个个的require_once进来吗?

    __autoload的作用就出来,当我们调用一个从未定义的类时,就会加载__autoload方法,你可以使用__autoload方法加载文件

    比如.

    auto.php

    <?php
    function __autoload($className){
        $className = $className.'.php';
        if(is_file($className)){
            require_once "$className";
        }
    }

    person.php

    <?php
    require_once 'auto.php';
    Data::delData();

    那 spl_auto_register()有什么作用呢?

    他可以加载自己写的函数来覆盖__autoload()函数

    auto_register.php

    <?php
    function load($className){
        $fileName = $className.'.php';
        if(is_file($fileName)){
            require_once "$fileName";
        }
    }
    spl_autoload_register('load');

    person.php

    <?php
    //require_once 'auto.php';
    require_once 'spl_auto_register.php';
    Data::delData();
    Data::catchData();

    输出

    string

     'del data' (length=8)
    

    我就和你嘿嘿嘿

  • 相关阅读:
    CSRF攻击原理
    大前端
    尊敬自己,才能拥有改变的力量
    重温尼采语录 序章
    人生的弹性 -- 观《聚宝盆》有感
    求学梦
    爱国情怀
    雾中见我
    找东西
    走在路上的感悟
  • 原文地址:https://www.cnblogs.com/tumio/p/5401302.html
Copyright © 2011-2022 走看看