class_existst returns false WP插件开发
class_existst returns false WP plugin development
我正在学习 Wordpress 插件开发课程,我现在被阻止了,因为 PHP 的方法 class_exsists()
找不到我的 class 即使一切正常,我错过了什么?
- 我正在使用 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();
}
文件夹结构
问题
问题是您的自动加载文件永远不会被包含。
这个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
我正在学习 Wordpress 插件开发课程,我现在被阻止了,因为 PHP 的方法 class_exsists()
找不到我的 class 即使一切正常,我错过了什么?
- 我正在使用 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();
}
文件夹结构
问题
问题是您的自动加载文件永远不会被包含。
这个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