2012-08-11 18 views
0

我的問題是我的常量沒有全局可用於包含在我的插件內更深的文件。讓我解釋。插件中的Wordpress常量在包含的文件中不可用

我主要的WordPress插件文件的第一行必要的/ *插件名稱之後:等等等等等等... * /我有像這樣

require_once(plugin_dir_path(__FILE__) . 'constants.php'); 

我的常量接下來,我__construct內()函數I包含另一個文件,它建立在WordPress的管理部分的菜單項,像這樣

require_once(TRADESHOW_DIR . 'structure/build_menu.php'); 

的build_menu.php文件的工作原理與鐵道部require_once調用對應於每個菜單頁頁路由器和子菜單。這是我不明白的地方。在build_menu.php中,我仍然可以訪問我常量,我使用這些常量來使用它們進行wordpress數據庫查詢,但是我沒有權限訪問後面包含的文件中的常量。下面的代碼:

//// build_menu.php 

function tradeshow_all_forms() {// callback from a wordpress add_submenu_page() function 
    global $wpdb; 

    $TS = new Bio_Tradeshow_Request_Plugin();// store plugin class in variable 

    if(isset($_GET['form_id']) && is_integer(intval($_GET['form_id']))) { 
    $form = $wpdb->get_results(
     " 
      SELECT * 
      FROM " . TRADESHOW_FORMS . " 
      WHERE id = '" . $_GET['form_id'] . "' 
     " 
    ); 
    $form = $form[0]; 

    echo TRADESHOW_SUBMITTED . ' build_menu.php<br />';// echo's out the correct value 
    require_once(TRADESHOW_DIR . 'structure/fill_form.php'); 
    } 
} 

這裏是fill_form.php文件的頂部

$user_id = $TS->user(); 
$user_id = $user_id['id']; 

$form_aswers = $wpdb->get_row(// returns nothing because TRADESHOW_SUBMITTED doesn't work 
    " 
     SELECT answers 
     FROM " . TRADESHOW_SUBMITTED . " 
    WHERE user_id = '$user_id' AND form_id = '$form->id' 
    ", 
    ARRAY_A 
); 

echo TRADSHOW_SUBMITTED;// echoes out TRADESHOW_SUBMITTED as a string and not a variable 

因此,大家可以看到這是一個內部的,包括主要的插件中包含。

此外,如果任何人都可以向我解釋爲什麼該插件的$ this變量在插件內包含的文件中不可用。我有這個在我的插件頂部

static $_o = null; 
static public function init() { 
    if (self::$_o === null) 
     self::$_o = new self; 
    return self::$_o; 
} 

這樣我就可以做$ variable = new plugin_class;但我想了解在使用require或require_once包含文件時是否會丟失某些內容。

+0

目前還不清楚哪些變量在fill_form.php中不可用 您可能有興趣查看http://www.php .net/manual/en/language.variables.scope.php。 這個問題剛剛發佈,你已經弄明白了嗎? – 2014-02-10 02:55:25

回答

0
FROM " . self::TRADESHOW_SUBMITTED . " 

當我在寫一個插件,它的內部類始終爲100%,所以這總是對我的作品。我在__construct()中定義常量,並用自己的子類調用它們。

+0

PHP致命錯誤:無法訪問self ::當沒有活動的類範圍 – 2012-08-11 18:01:48

+0

@MariusMiliunas嘗試在Bio_Tradeshow_Request_Plugin的__construct()中包含常量嗎? – 2012-08-11 20:04:05

相關問題