[英]How to include multiple folders and files using spl_autoload();
我正在构建一个使用许多不同类的项目,并且文件夹结构将非常大。 我还没有真正处于可以整合作曲家的阶段(尽管如果我愿意,请推荐一种我可以的方式)。
如何优化以下功能? 正如你所看到的,它有点凌乱。
spl_autoload_register('knpv_autoloader');
function knpv_autoloader($classname){
//Admin Includes
if (strpos($classname, 'KnpvAdmin') !== false) {
if (file_exists(plugin_dir_path( __FILE__ ).'/knp-admin/'.$classname.'.php')) {
include_once plugin_dir_path( __FILE__ ).'/knp-admin/'.$classname.'.php';
}
}
//Manager Includes
if (strpos($classname, 'KnpvManager') !== false) {
if (file_exists(plugin_dir_path( __FILE__ ).'/knp-manager/'.$classname.'.php')) {
include_once plugin_dir_path( __FILE__ ).'/knp-manager/'.$classname.'.php';
}
}
//Supplier Includes
if (strpos($classname, 'KnpvSupplier') !== false) {
if (file_exists(plugin_dir_path( __FILE__ ).'/knp-supplier/'.$classname.'.php')) {
include_once plugin_dir_path( __FILE__ ).'/knp-supplier/'.$classname.'.php';
}
}
//List queries Includes
if (strpos($classname, 'KnpvList') !== false) {
if (file_exists(plugin_dir_path( __FILE__ ).'/knp-list-queries/'.$classname.'.php')) {
include_once plugin_dir_path( __FILE__ ).'/knp-list-queries/'.$classname.'.php';
}
}
//Script Includes
if (strpos($classname, 'KnpvScripts') !== false) {
if (file_exists(plugin_dir_path( __FILE__ ).'/knp-scripts-styles/'.$classname.'.php')) {
include_once plugin_dir_path( __FILE__ ).'/knp-scripts-styles/'.$classname.'.php';
}
}
//Search an filter Includes
if (strpos($classname, 'KnpvSearch') !== false) {
if (file_exists(plugin_dir_path( __FILE__ ).'/knp-search/'.$classname.'.php')) {
include_once plugin_dir_path( __FILE__ ).'/knp-search/'.$classname.'.php';
}
}
//Form includes
if (strpos($classname, 'KnpvForm') !== false) {
if (file_exists(plugin_dir_path( __FILE__ ).'/knp-form/'.$classname.'.php')) {
include_once plugin_dir_path( __FILE__ ).'/knp-form/'.$classname.'.php';
}
}
//Everything else
if (strpos($classname, 'Knpv') !== false) {
if (file_exists(plugin_dir_path( __FILE__ ).'/'.$classname.'.php')) {
include_once plugin_dir_path( __FILE__ ).'/'.$classname.'.php';
}
}
}
您可能可以使用作曲家。 您需要一个 composer.json 来配置各种命名空间的根路径。 运行composer dump-autoload
将生成类加载器,您只需要在代码的主要入口文件中包含一次<root>/vendor/autoload.php
(或类似的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.