Composer自动加载

现在很多的PHP框架使用了composer方法来管理第三方类, 之前也是一脸懵,一直在想,我们的框架是怎么做到我们自动把vendor中的类库自动识别到相关文件的。后来看了一下源码,发现是是用了composer去管理跟实现这个功能。以下是在看源码,写下的一点小结。

/**
 * php>5.6的composer加载类库的方法
 * 1.使用composer管理类,比如安装一个类之后,就会在/vendor/composer/文件里面的几个文件中,自动生成类库的相关配置
 * autoload_static.php中会自动生成一些变量值,就是相应类库的类信息文件之类;
 * autoload_files.php是加载一些助手函数的文件类;
 * autoload_real.php是实现加载的功能类;
 * ClassLoader.php实现类加载的助手类
 * 其他相关类也可以看一下,这里只是分析php>5.6会用到的文件。
 * autoload_static.php其实已经包含了autoload_classmap.php、autoload_namespaces.php、autoload_psr4.php这些文件的值。
 * 2.使用composer管理的项目,在入口文件index.php中会包含autoload.php文件,而这个文件会去调用autoload_real.php文件类的getLoader()方法去实现类加载
 * 3.getLoader方法的实现原理,其实就是使用php的spl_autoload_register()方法注册自动加载器。只要注册了相应方法到加载器中。这个方法可以在执行程序时,当需要调用其他类的时候通过这个函数去自动加载目标类
 * 4.而第三步具体怎么找到相应类文件,这个可以去具体方法中查看。大致是使用了autoload_static.php,autoload_files.php文件中的数据,然后在ClassLoader.php中实现相应逻辑判断,并返回包含相应类文件。
 */

猜你喜欢

转载自blog.csdn.net/landylxy/article/details/84026574