PHP自动加载类机制

首先我们需要一个页面他是Index类,在他的构造函数中我们需要输出一些东西表示我们新建这个类了

需要在我们网站根目录新建一个文件路径 为 autoLoad/mvc/view/home

在这个目录中我们需要新建上面我们提到的类

<?php
namespace app\mvc\view\home;

class Index
{
    function __construct()
    {
        echo '<h1> Welcome To Home </h1>';
    }
}

然后我们在autoLoad文件夹中新建一个 加载器 Loader.php

<?php
class Loader
{
    /* 路径映射 */
    public static $vendorMap = array(
        'app' => __DIR__ ,
    );

    /**
     * 自动加载器
     */
    public static function autoload($class){
        $file = self::findFile($class);

        if (file_exists($file)) {
            self::includeFile($file);
        }
    }

    /**
     * 解析文件路径
     */
    private static function findFile($class){
        $vendor = substr($class, 0, strpos($class, '\\')); // *命名空间
        $vendorDir = self::$vendorMap[$vendor]; // 文件基目录
        $filePath = substr($class, strlen($vendor)) . '.php'; // 文件相对路径
        return strtr($vendorDir . $filePath, '\\', DIRECTORY_SEPARATOR); // 文件标准路径
    }

    /**
     * 引入文件
     */
    private static function includeFile($file){
        if (is_file($file)) {
            include $file;
        }
    }
}

然后我们新建一个我们需要访问的文件 autoLoader.php

<?php
namespace app\autoLoad;

use app\mvc\view\home\Index;

include 'Loader.php'; // 引入加载器
spl_autoload_register('Loader::autoload'); // 注册自动加载


ini_set("display_errors", "On");
error_reporting(E_ALL | E_STRICT);


new Index; // 实例化未引用的类

在这个我们可以访问的文件中我们把加载器include进来,然后使用spl_autoload_register('Loader::autoload') 把 加载器中的这个方法 注册到 __autoload 中 ,当我们实例化一个尚未引用的类时,

加载器就会自动的为我们引用上这个类

上一篇:激光推送


下一篇:vim下在插件emmet