在尝试扩展课程时,在Php中找不到类

时间:2015-08-11 05:43:02

标签: php wordpress-plugin

我正在编写一个插件,我必须从另一个php文件扩展一个类。但我得到了Fatal error: Class 'EWWL_Admin_Init' not found

这是我的主要文件代码。

class Eden_Woocommerce_WL_Admin {

    private static $instance = null;

    public static function getInstance() {
        if (is_null(self::$instance)) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    public function __construct() {
        $this->includes();
        $this->add_menu_page();
    }

    private function includes() {
        include_once( EWCWL_PLUGIN_DIR . '/includes/admin/ewwl-admin-menu.php' );
        include_once( EWCWL_PLUGIN_DIR . '/includes/admin/ewwl-admin-init.php' );
    }

    private function add_menu_page() {
        EWWL_Admin_Init::getInstance();
        EWCWL_Admin_menu::getInstance();
    }
}

这里是EWCWL_Admin_menu class

class EWCWL_Admin_menu extends EWWL_Admin_Init {

    private static $instance = null;

    public static function getInstance() {
        if(is_null(self::$instance)){
            self::$instance = new self();
        }
    }

    public function __construct($args = array()) {

        if (!empty($args)) {
            $this->settings = $args;

            if (isset($this->settings['create_menu_page']) && $this->settings['create_menu_page']) {
                add_action('admin_menu', array($this, 'add_ewwl_menu_page'));
            }
        }
    }

    public function add_ewwl_menu_page() {
        $position = apply_filters('ewcwl_plugins_menu_item_position', '62.32');
        add_menu_page('plugin_panel', __('Menu title', 'ed-wcwl'), 'manage_options', 'ed_plugin_panel', NULL, '', $position);
    }

}

这是EWWL_Admin_Init

class EWWL_Admin_Init {

    private static $instance = null;

    public static function getInstance() {
        if( is_null(self::$instance) ){
            self::$instance = new self();
        }
        return self::$instance;
    }

    public function __construct() {

    }

}

可能是我错过了什么。提前谢谢。

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为EWWL_Admin_Init之前没有EWCWL_Admin_menu。交换两行

include_once( EWCWL_PLUGIN_DIR . '/includes/admin/ewwl-admin-init.php' );
include_once( EWCWL_PLUGIN_DIR . '/includes/admin/ewwl-admin-menu.php' );
来自Eden_Woocommerce_WL_Admin课程的

解决了这个问题。