2011-08-29 19 views
0

我目前正在爲客戶構建一個Wordpress插件,並且我正在遇到一些訪問在函數內部從函數外部創建的變量和對象的問題。例如,這是我的代碼:訪問對象時出現問題,並且包含函數內部的外部函數

// Include files: 
require_once('classes/panel.inc.php'); 
$panel = new AdminPanel(); 

// Actions & Options: 
add_action('admin_menu', 'configurePages'); 

// Configure pages: 
function configurePages(){ 

    // Boats: 
    add_menu_page(__('Båtar','admin-main'), __('Båtar','boats'), 'manage_options', 'boats', array($panel, 'displayBoatManager')); 
    add_submenu_page('boats', __('Sök båtar','search-boats'), __('Sök objekt','search-boats'), 'manage_options', 'search-boats', array($panel, 'displayBoatSearch')); 
    add_submenu_page('boats', __('Hantera utrustning','manage-equipment'), __('Hantera utrustning','manage-equipment'), 'manage_options', 'manage-equipment', array($panel, 'displayEquipmentManager')); 

    // Customers: 
    add_menu_page(__('Kunder','admin-main'), __('Kunder','boats'), 'manage_options', 'customers', array($panel, 'displayCustomerManager')); 
    add_submenu_page('customers', __('Sök kunder','search-customers'), __('Sök kunder','search-customers'), 'manage_options', 'search-customers', array($panel, 'displayCustomerSearch')); 
} 

正如你可以看到我已經創建了一個面板對象,如果我轉儲功能之前的內容,我得到一個正確的輸出。儘管如此,所有的頁面都抱怨面板不是一個有效的變量,也不是一個對象。什麼可能導致這個?

我可以簡單的將解決這個問題:

require_once('classes/panel.inc.php'); 
$panel = new AdminPanel(); 

裏面的configurePages功能。但我不應該這樣做。 我有包括相同的問題,他們簡單不會得到承認函數內。如果有人能夠就這個問題分享一些見解並且可能如何解決這個問題,我會非常高興。

在此先感謝! // 喬納森

回答

1

不能從函數中訪問$panel,因爲你的功能是尋找它的變量$panel的局部範圍,而實際上已經在全球範圍內確定。使在函數中使用的變量

一種方法是

function configurePages() { 
    global $panel; 
    … 
} 

更多變量的作用域可以在這裏找到:http://php.net/manual/en/language.variables.scope.php

+0

感謝,這爲變量的偉大工程,但我不知道如何將它應用於任何類型的函數,如「require_once」或「include_once」。我想將我的配置保存在另一個文件中,但仍能夠從所有功能中訪問它。你碰巧知道如何做到這一點? – Jonathan

+0

很難說沒有文件內容,但我會假設你再次試圖訪問你的函數中的一些配置變量,這些配置變量已經在全局範圍內包含的文件中定義。如果是這樣的話,你還必須爲這些變量調用'global':'global $ panel,$ config,...;',同時'$ config'已經在include中定義。 – polarblau

+0

我試圖做到這一點,但它似乎沒有幫助。在該文件內創建的任何變量似乎都遙不可及。我希望能夠實現這個目標,但我想我會把它全部放在一個文件中。 – Jonathan

相關問題