class_existst returns false WP插件开发

class_existst returns false WP plugin development

我正在学习 Wordpress 插件开发课程,我现在被阻止了,因为 PHP 的方法 class_exsists() 找不到我的 class 即使一切正常,我错过了什么?

代码

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-statement:

if (file_exists(__FILE__ . '/vendor/autoload.php')) {

永远不会评估为真,因为 __FILE__ returns 一个包含完整路径的字符串 当前文件的文件名。所以你的支票基本上是:

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