PHP:新手问题 - 类中的变量?

时间:2011-03-17 19:30:52

标签: php class

我有这个代码:

class c_web
{
    var $root_fso;

    function __construct($webname)
    {
        $this->webname = $webname;
        $root_fso = $_SERVER{'DOCUMENT_ROOT'};
    }

    function init($template_filename)
    {
        echo $root_fso;
    }

}

我的问题:$ root_fso变量的语法有什么问题,因为它返回空白?

感谢

5 个答案:

答案 0 :(得分:5)

您需要明确说出$this->root_fso,因为PHP不需要您声明局部变量,因此$root_fso始终会引用本地变量。访问班级字段时请使用$this->

其他观察: 另外$_SERVER{'DOCUMENT_ROOT'}应为$_SERVER['DOCUMENT_ROOT']?另外$this->webname指的是未定义的字段,您应该定义它。

答案 1 :(得分:3)

这是$this->root_fso。在PHP中,$this->是访问任何类成员所必需的。

答案 2 :(得分:0)

这是一个类变量,因此您必须使用$this

进行引用
class c_web
{
    var $root_fso;

    function __construct($webname)
    {
        $this->webname = $webname;
        $this->root_fso = $_SERVER['DOCUMENT_ROOT'];
    }

    function init($template_filename)
    {
        echo $this->root_fso;
    }

}

答案 3 :(得分:0)

    <?php

class c_web
{
    var $root_fso;

    function __construct($webname)
    {
        $this->webname = $webname;
        $this->root_fso = $_SERVER{'DOCUMENT_ROOT'};
    }

    function init($template_filename)
    {
        echo $this->root_fso;
    }

}

$a = new c_web("a");
$a->init("a");
?>

答案 4 :(得分:0)

这里有两件事不对。

首先,$_SERVER{'DOCUMENT_ROOT'};应为$_SERVER['DOCUMENT_ROOT'];

其次,$root_fso的值仅在__construct中更改。您需要将__construct函数的第二行更改为:$this->root_fso = $_SERVER['DOCUMENT_ROOT'];