我正在建立一个使用很多不同类的项目,并且文件夹结构将非常大。我不是真正可以集成作曲家的阶段(尽管如果可以的话,请推荐一种可行的方式)。
如何优化以下功能?如您所见,它有点混乱。
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
(或类似内容)即可。