问题描述
我正在学习wordpress插件开发课程,现在被封锁了,因为即使一切似乎正常,PHP的方法class_exsists()
也找不到我的类,我想念什么?
defined('ABSPATH') or die('(ಠ_ಠ)┌∩┐ nopE!');
if (file_exists(__FILE__ . '/vendor/autoload.PHP')) {
require_once(dirname(__FILE__) . '/vendor/autoload.PHP');
}
define('PLUGIN_PATH',plugin_dir_path(__FILE__));
if(class_exists('Inc\\Init')){
Inc\Init::register_services();
}
文件夹结构
解决方法
问题
问题是您的自动加载文件永远不会包含在内。
此if语句:
if (file_exists(__FILE__ . '/vendor/autoload.php')) {
永远不会评估为true,因为__FILE__
返回的字符串包含完整路径和当前文件的文件名。因此,您的支票基本上是:
if (file_exists('/path/to/file.php/vendor/autoload.php')) {
您看到的看起来很错误(因为它也有file.php
部分)。
解决方案
您只想获取文件夹名称,所以请改用__DIR__
:
if (file_exists(__DIR__ . '/vendor/autoload.php')) {
require_once __DIR__ . '/vendor/autoload.php';
}
您可以阅读有关PHP's magic constants here
的更多信息