zoukankan      html  css  js  c++  java
  • spl_autoload_register 和 __autoload()魔术方法

    在 PHP 5.3 之前,__autoload 函数抛出的异常不能被 catch 语句块捕获并会导致一个致命错误(Fatal Error)。 

    尽管 __autoload() 函数也能自动加载类和接口,但更建议使用 spl_autoload_register() 函数。 spl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载(同一个应用中,可以支持任意数量的加载器,比如第三方库中的)。因此,不再建议使用 __autoload() 函数,在以后的版本中它可能被弃用。

    autoload_function
    这是一个函数【方法】名称,可以是字符串或者数组(调用类方法使用)。这个函数(方法)的功能就是,来把需要new 的类文件包含include(requeire)进来,这样new的时候就不会找不到文件了。其实就是封装整个项目的include和require功能。

    throw
    此参数设置了 autoload_function 无法成功注册时, spl_autoload_register()是否抛出异常。

    prepend
    如果是 true,spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。

    test.php

    <?php
    class test
    {
        function __construct(){
            echo "test 类被初始化了<br>";
        }
        function show(){
            //当前页面是utf8编码   
            $str = '中文89PHP';
    
            echo strlen($str)."<br/>"; //中文+数字+英文:6 + 2 + 3 = 11
            echo mb_strlen($str, 'gbk')."<br/>"; //中文+数字+英文:3 + 2 + 3 = 8
            echo mb_strlen($str, 'utf8')."<br/>"; //中文+数字+英文:2 + 2 + 3 = 7 
    
            //数据库 varchar 一个中文占一个字符长度
        }
    }
    my_autoload.php 文件
    <?php
    //方法一:自动加载函数 5.0之后弃用
    /*function __autoload($class)
    {
        $file = $class . '.php';
        if ( is_file($file) ) {
            require_once($file);
        }
    }
    
    $test = new test(); //输出:test 类被初始化了
    */
    
    //使用 spl_autoload_register 函数
    //方法二:
    class my_autoload
    {
        public static function autoload($class){
            $file = $class . '.php';
            if ( is_file($file) ) {
                require_once($file);
            }
        }
    }
    //注册加载
    spl_autoload_register("my_autoload::autoload",true,true);
    
    $test = new test(); //输出:test 类被初始化了
    $test->show();
    
    ?>

  • 相关阅读:
    Address already in use: JVM_Bind:80 异常的解决办法
    Spring(转载二)
    Spring(转载一)
    mybatis(二)
    mybatis(一)
    存储过程(二)
    存储过程(一)
    web过滤器
    请求转发和请求重定向
    JavaWeb(二)
  • 原文地址:https://www.cnblogs.com/wanglijun/p/10926499.html
Copyright © 2011-2022 走看看