PHP中当需要使用另一个文件中的类或对象时,需要先require或include这个文件。require和include的区别是require失败后出告警,include失败后出warning。
PrestaShop在加载这部分有一些自己独到的处理,一起看下。
1. 访问顺序:
index.php -> config/config.inc.php -> config/autoload.php -> classes/PrestaShopAutoload.php
index.php是PrestaShop的总入口
config.inc.php做一些配置,其中还调用了defines.inc.php(包含了大部分路径的定义),settings.inc.php(包含了数据库定义)等等
autoload.php感觉这一步有点多余,完全可以在config.inc.php里直接require PrestaShopAutoload。也许是保留做未来功能扩展或者是为了支持多商店,who knows
PrestaShopAutoload.php生成所有用到的.php文件的列表,并存储在cache/class_index.php文件中;定义了供spl_autoload_register使用的回调函数,后面重点分析下这个class
2. PrestaShop使用了spl_autoload_register,我们先来简单看下这个函数的意义