2014-01-07 65 views
1

我正在使用WordPress插件,並開始使用類來存儲信息,如數據庫設置。但是我遇到了一個問題。我無法在我的類中輸出或回顯變量。我創建了另一個測試插件來測試某些概念。這是我的測試插件測試類的插件代碼:'你好!世界無法顯示wordpress插件中的類變量與PHP

<?php 
/* WordPress Plugin */ 
// create class 
class test 
{ 
    // Variable 
    public $HW = "HELLO WORLD!"; 

    // Function to return variable 
    public function getHW() 
    { 
     return $this->HW; 
    } 

    // Function to set variable 
    public function setHW($newHW) 
    { 
     $this->HW = $newHW; 
    } 
} 

// Initiate class 
$classObj = new test(); 

// Output data 
function displayClass() 
{ 
    echo "hello world!"; 
    echo $classObj->getHW(); 
} 

// Add code to display in wordpress 
add_shortcode('test_hw', 'displayClass'); 
?> 

我知道WordPress的部分作品,因爲顯示在頁面上。但是我無法獲得類中的變量加載。它要麼阻止頁面加載,要麼不顯示變量。我似乎無法找到錯誤。任何幫助,將不勝感激。

我甚至試過這樣的代碼:

$classObj = new test(); 
$testHW = $classObj->getHW(); 

$classObj = new test(); 
$testHW = $classObj->HW; 

這兩種方法都不工作,要麼。我在Fedora 19上運行Apache 5.5.6和PHP 5.5.7。

回答

0

我不認爲$ classObj在函數中可用,因爲它在其外部實例化。您可以嘗試使$ classObj全局。這不是一個推薦的解決方案,但它似乎是WordPress的正常解決方案。試試這個代碼:

<?php 
/* WordPress Plugin */ 
// create class 
class test 
{ 
    // Variable 
    public $HW = "HELLO WORLD!"; 

    // Function to return variable 
    public function getHW() 
    { 
     return $this->HW; 
    } 

    // Function to set variable 
    public function setHW($newHW) 
    { 
     $this->HW = $newHW; 
    } 
} 

// Initiate class 
global $classObj; 
$classObj = new test(); 

// Output data 
function displayClass() 
{ 
    global $classObj; 
    echo "hello world!"; 
    echo $classObj->getHW(); 
} 

displayClass(); 
?> 
+0

謝謝你的回答。似乎繞過不能訪問類的問題需要使用'global'。解決了這個問題,並能夠正常使用我的課程。 – Jogger71