zoukankan      html  css  js  c++  java
  • php奇技淫巧之自动装载

    知识储备:

    spl_autoload_register https://www.php.net/manual/zh/function.spl-autoload-register.php

    测试目录结构

    <?php
    include "load.php";
    TestsTest1::test();

    ------------index.php

    <?php
    class Loader
    {
        static function loadClass($class)
        {
            $class =  __DIR__.DIRECTORY_SEPARATOR.str_replace('\','/',$class).'.php';
            $class = strtolower($class);
            if (file_exists($class)) {
                include $class;
                return;
            }
        }
    }
    spl_autoload_register(array('Loader','loadClass'));

    ------------load.php

    <?php
    namespace Tests;
    class Test1{
        static function test(){
            echo __CLASS__." ";
            echo __FILE__." ";
        }
    }

    ----------./test/test1.php

    测试结果:

    自动装载的实现很简单

    思考:1、是不是使用时才会触发?

    <?php
    include "load.php";
    TestsTest1::test();

    function aa(){
        TestsTest2::test();
    }

    echo "测试加载顺序 ";

    aa();

    写了一个小实验 同test1的test2,通过注释aa(),证明只有在调用时才会加载执行

    这样一来动态装载的价值就体现出来了

    1、调用时候才加载该文件,减少了实际执行文件大小   幻想一下一个大文件里面调用其中一个函数只需加载该函数依赖的文件就可以了,而不是整个文件依赖的文件

    2、不用在头部一通require/include,增加了美观度   如果程序员不追求代码美观跟咸鱼有什么区别

  • 相关阅读:
    Netty(一、初步了解)
    nginx(三、keepalived高可用)
    nginx(二、配置文件)
    nginx(一、安装与启动)
    ElasticSeach(六、springboot集成ES high level client)
    ElasticSeach(五、命令操作)
    ElasticSeach(四、mapping)
    ElasticSeach(三、IK分词器配置)
    ElasticSeach(二、部署运行)
    ElasticSeach(一、基本概念)
  • 原文地址:https://www.cnblogs.com/yuanyuanyuan/p/10821486.html
Copyright © 2011-2022 走看看