class_existst返回错误的WP插件开发 问题解决方案

问题描述

我正在学习wordpress插件开发课程,现在被封锁了,因为即使一切似乎正常,PHP方法class_exsists()也找不到我的类,我想念什么?

  • 我正在将 PSR-4 与作曲家一起使用。
  • 在教学视频中,一切正常,我检查了文件夹结构和文件差异,一切都匹配。

代码

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();
}

文件夹结构

This is the structure

解决方法

问题

问题是您的自动加载文件永远不会包含在内。

此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

的更多信息

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...