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,增加了美观度   如果程序员不追求代码美观跟咸鱼有什么区别

  • 相关阅读:
    python依赖包整体迁移方法
    ubuntu关于ssh协议登录问题
    k8s部署02-----kubeadm部署k8s
    k8s部署01-----what is k8s?
    兼容到ie10的js文件导出、下载到本地
    webstorm减少内存占用
    foxmail占cpu 100%解决办法
    原生js返回顶部
    js字符串驼峰和下划线互相转换
    element-ui的rules中正则表达式
  • 原文地址:https://www.cnblogs.com/yuanyuanyuan/p/10821486.html
Copyright © 2011-2022 走看看