为什么我的自动加载器在我的 wp 安装中每隔 class 加载一次?
Why is my autoloader loading every class in my wp install?
我一直在开发一个 wordpress 插件,我不得不在另一个文件中扩展 class,这是我以前从未做过的事情。所以这让我开始使用自动加载器。让您了解我的文件夹结构。
我的插件目录
plugins/knp-vendor-portal/
我的文件夹结构。
/knp-classes
/css
/js
knp-供应商-portal.php
在我的主插件文件中,我使用以下内容来加载我的 classes,但是当我查看查询监视器时,我遇到了大量错误。错误表明 include_once 函数似乎试图从所有其他插件加载数百个 classes。那么,如果 DIR 名称指向我的 classes 目录,为什么它不只从我的插件加载 classes。
这是我在主插件文件中使用的代码。
function knp_load_first(){
//Auto load all the class files
spl_autoload_register('knpv_autoloader');
//Some other code calling some methods
}
add_action('plugins_loaded', 'knp_load_first');
function knpv_autoloader($classname){
include_once plugin_dir_path( __FILE__ ).'knp-classes/'.$classname.'.php';
}
自动加载器会在每个 class 尝试加载时运行,但尚未加载。在尝试从 knp-classes
目录加载它之前,您需要检查 knpv_autoloader
函数中的 $classname
是否与您的命名空间或命名约定匹配。例如...
function knpv_autoloader($classname)
{
if (strpos($classname, 'knpv_') !== false) {
include_once plugin_dir_path( __FILE__ ).'knp-classes/'.$classname.'.php';
}
}
这假定您的 classes 具有前缀 knpv_
,如果您使用的是命名空间,您也可以检查它,例如 Knpv\
等...
我一直在开发一个 wordpress 插件,我不得不在另一个文件中扩展 class,这是我以前从未做过的事情。所以这让我开始使用自动加载器。让您了解我的文件夹结构。
我的插件目录
plugins/knp-vendor-portal/
我的文件夹结构。
/knp-classes
/css
/js
knp-供应商-portal.php
在我的主插件文件中,我使用以下内容来加载我的 classes,但是当我查看查询监视器时,我遇到了大量错误。错误表明 include_once 函数似乎试图从所有其他插件加载数百个 classes。那么,如果 DIR 名称指向我的 classes 目录,为什么它不只从我的插件加载 classes。
这是我在主插件文件中使用的代码。
function knp_load_first(){
//Auto load all the class files
spl_autoload_register('knpv_autoloader');
//Some other code calling some methods
}
add_action('plugins_loaded', 'knp_load_first');
function knpv_autoloader($classname){
include_once plugin_dir_path( __FILE__ ).'knp-classes/'.$classname.'.php';
}
自动加载器会在每个 class 尝试加载时运行,但尚未加载。在尝试从 knp-classes
目录加载它之前,您需要检查 knpv_autoloader
函数中的 $classname
是否与您的命名空间或命名约定匹配。例如...
function knpv_autoloader($classname)
{
if (strpos($classname, 'knpv_') !== false) {
include_once plugin_dir_path( __FILE__ ).'knp-classes/'.$classname.'.php';
}
}
这假定您的 classes 具有前缀 knpv_
,如果您使用的是命名空间,您也可以检查它,例如 Knpv\
等...