Tp5 类的自动加载

2021-02-06  本文已影响0人  HueyYao

Tp5 类的自动加载

为了实现创建自定义目录 可以use他的类库文件来实现功能这时候就需要配置修改对应自动加载的文件

首先添加自定义目录\tp5\hueyyao\ali\Send.php

想要use Send.php文件来使用时 就需要接下来的操作

修改\tp5\thinkphp\library\think\Loader.php文件

在第115行

self::addAutoLoadDir($rootPath . 'extend');

下添加例如一下的信息

self::addAutoLoadDir($rootPath . 'hueyyao');

整理方法演示如下:

    // 注册自动加载机制
    public static function register($autoload = '')
    {
        // 注册系统自动加载
        spl_autoload_register($autoload ?: 'think\\Loader::autoload', true, true);

        $rootPath = self::getRootPath();

        self::$composerPath = $rootPath . 'vendor' . DIRECTORY_SEPARATOR . 'composer' . DIRECTORY_SEPARATOR;

        // Composer自动加载支持
        if (is_dir(self::$composerPath)) {
            if (is_file(self::$composerPath . 'autoload_static.php')) {
                require self::$composerPath . 'autoload_static.php';

                $declaredClass = get_declared_classes();
                $composerClass = array_pop($declaredClass);

                foreach (['prefixLengthsPsr4', 'prefixDirsPsr4', 'fallbackDirsPsr4', 'prefixesPsr0', 'fallbackDirsPsr0', 'classMap', 'files'] as $attr) {
                    if (property_exists($composerClass, $attr)) {
                        self::${$attr} = $composerClass::${$attr};
                    }
                }
            } else {
                self::registerComposerLoader(self::$composerPath);
            }
        }

        // 注册命名空间定义
        self::addNamespace([
            'think'  => __DIR__,
            'traits' => dirname(__DIR__) . DIRECTORY_SEPARATOR . 'traits',
        ]);

        // 加载类库映射文件
        if (is_file($rootPath . 'runtime' . DIRECTORY_SEPARATOR . 'classmap.php')) {
            self::addClassMap(__include_file($rootPath . 'runtime' . DIRECTORY_SEPARATOR . 'classmap.php'));
        }

        // 自动加载extend目录
        self::addAutoLoadDir($rootPath . 'extend');
        self::addAutoLoadDir($rootPath . 'hueyyao');
    }

上一篇下一篇

猜你喜欢

热点阅读