使用PHP无法在wordpress插件中显示类变量

时间:2014-01-07 07:15:32

标签: php wordpress class plugins

我正在使用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
$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上使用PHP 5.5.7运行Apache 2.4.6。

1 个答案:

答案 0 :(得分: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();
?>