composer的自动加载机制

composer支持四种模式(psr0,psr4,classmap,files)

composer默认psr4,支持php5.2
PSR-4指定的就当作当前命名空间的目录, 而PSR-0 指定的是当前命名空间的父目录。composer dump-autoload 一下

<?php
//实现自动加载类
spl_autoload_register(function ($class) {
    /* 限定类名路径映射 */
    $class_map = array(
        // 限定类名 => 文件路径
        $class => $class.".php",
    );
    /* 引入相关文件 */
    if (file_exists($file = $class_map[$class])) include $file;
});
//按照顺序加载(按照命名空间寻找)
$aa =new \classes\AA();
$aa->aa();
echo "\n";
$bb = new \classes\BB();
$bb->bb();
echo "\n";
$sasasaasds = new \saadsadsas\sasasaasds();
$sasasaasds->wqwqwq();
echo "\n";
$fwqdqwd = new \wqeqweqw\fwqdqwd();
$fwqdqwd->尼玛();

sql_autoload_register() 函数 跟 __autoload()相比,
1.__autoload($class) 因为是一个函数,所以只能定义一次,使用多个会冲突报错;而 sql_autoload_register('function') 可定义多个,它有效地创建一个队列的自动装载函数并按顺序依次定义

2.SPL函数很丰富,有更多的操作空间:如spl_autoload_unregister()注销已经注册的函数、spl_autoload_functions()返回所有已经注册的函数等

💫 评论卡

备案号:粤ICP备18155514号-2