繁体   English   中英

如何使用 spl_autoload() 包含多个文件夹和文件;

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM