我的問題是我的常量沒有全局可用於包含在我的插件內更深的文件。讓我解釋。插件中的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包含文件時是否會丟失某些內容。
目前還不清楚哪些變量在fill_form.php中不可用 您可能有興趣查看http://www.php .net/manual/en/language.variables.scope.php。 這個問題剛剛發佈,你已經弄明白了嗎? – 2014-02-10 02:55:25