Autoloader未从我的插件中找到类

时间:2017-11-05 作者:dingo_d

我正在尝试在插件中使用autoloader。

在插件的主文件中

use My_Plugin\\Includes;

require_once( plugin_dir_path( __FILE__ ) . \'includes/class-autoloader.php\' );

$autoloader = new Includes\\Autoloader();
在我的includes/class-autoloader.php 我拥有的文件

namespace My_Plugin\\Includes;

class Autoloader() {
    public __construct() {
        spl_autoload_register( [ $this, \'autoloader\' ] );
    }

    public autoloader( $class_name ) {
        error_log( print_r( $class_name, true ) );

        if ( strpos( $class_name, \'My_Plugin\' ) === false ) {
          return;
        }
    }
}
但是插件中的所有类都不会显示在error_log.txt. 我在测试网站上看到了WooCommerce的课程。

为什么我在插件中看不到我的类?

1 个回复
SO网友:jaswrks

考虑到您发布的第一个PHP代码片段,我看不到您正在使用该类,这解释了为什么您没有在正在调试的自动加载错误日志中看到您的类。

请注意use 不会触发PHP的自动加载程序。

use My_Plugin\\Includes;
您需要实际实例化一个类,检查它是否存在,或者执行其他需要在运行时将该类实际加载到内存中的操作。只有这样,自动加载队列才会收到加载一个类文件的请求。

目前,您使用的唯一类是Autoloader类本身,它不需要自动加载,因为您已经显式地包含了类文件。

结束

相关推荐

Why does it loop twice?

我有这个循环,我不知道为什么,我有一个“加载更多”按钮,当我点击它时,它会再次加载所有文章。有人能帮忙吗?<div class=\"content\"> <div class=\"container load_more\"> <div class=\"row\"> <?php $args = array(\'category_name\' => \'actu, quizz\' );