繁体   English   中英

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

[英]PHP: newbie question - variables inside a 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变量的语法出了什么问题,因为它返回空白?

谢谢

您需要明确地说$this->root_fso因为PHP不需要您声明局部变量,因此$root_fso总是会引用局部变量。 访问类的字段时,请使用$this->

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

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

这是一个类变量,因此您必须引用$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;
    }

}
    <?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");
?>

这里有两件事是错的。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM