Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:新手问题-类中的变量?_Php_Class - Fatal编程技术网

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

PHP:新手问题-类中的变量?,php,class,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; }

我有以下代码:

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\u fso,因为PHP不需要您声明局部变量,所以$root\u fso总是要引用局部变量。访问类的字段时使用$this->

其他意见:
另外$\u服务器{'DOCUMENT\u ROOT'}应该是$\u服务器['DOCUMENT\u ROOT']?另外,$this->webname引用了一个未定义的字段,您应该定义它。

您需要明确地说$this->root\u fso,因为PHP不需要您声明局部变量,所以$root\u fso总是引用局部变量。访问类的字段时使用$this->

其他意见:
另外$\u服务器{'DOCUMENT\u ROOT'}应该是$\u服务器['DOCUMENT\u ROOT']?另外,$this->webname引用了一个未定义的字段,您应该定义它。

它是$this->root\u fso。在PHP中,访问任何类成员都需要$this->。

它是$this->root\u fso。在PHP中,访问任何类成员都需要$this->。

它是一个类变量,因此必须使用$this进行引用


它是一个类变量,因此必须引用$this


这里有两件事不对

首先,$\u SERVER{'DOCUMENT\u ROOT'};应该是$\u服务器['DOCUMENT\u ROOT']


其次,$root_fso的值仅在_构造中更改。您需要将uu构造函数的第二行更改为:$this->root\u fso=$\u SERVER['DOCUMENT\u root']

这里有两件事不对

首先,$\u SERVER{'DOCUMENT\u ROOT'};应该是$\u服务器['DOCUMENT\u ROOT']


其次,$root_fso的值仅在_构造中更改。您需要将uu构造函数的第二行更改为:$this->root\u fso=$\u SERVER['DOCUMENT\u root']

$\u服务器['DOCUMENT\u ROOT']。注意方括号。@ithcy:实际上,大括号也可以。但是你是对的,正方形是首选的。@nikic:我从未见过在PHP中使用大括号访问数组成员。曾经你能提供证据吗?@ithcy:它有点隐蔽,只在上的字符串偏移量访问部分提到过。在ideone上:@nikic:好的,我今天学到了一些关于PHP的新知识:我在任何地方都找不到它的文档,但我测试过了,你是对的。谢谢$_服务器['DOCUMENT_ROOT']。注意方括号。@ithcy:实际上,大括号也可以。但是你是对的,正方形是首选的。@nikic:我从未见过在PHP中使用大括号访问数组成员。曾经你能提供证据吗?@ithcy:它有点隐蔽,只在上的字符串偏移量访问部分提到过。在ideone上:@nikic:好的,我今天学到了一些关于PHP的新知识:我在任何地方都找不到它的文档,但我测试过了,你是对的。谢谢为了完整起见:$\u服务器{'DOCUMENT\u ROOT'}是完全有效的语法,它的作用与$\u服务器['DOCUMENT\u ROOT']完全相同。但按照惯例,它仍不得被使用。这个语法几乎被弃用了,我想在PHP5.3中实际上已经弃用了一段时间。感谢@nikic提供的额外信息,我不知道。为了完整起见:$\u SERVER{'DOCUMENT\u ROOT'}是完全有效的语法,它的作用与$\u SERVER['DOCUMENT\u ROOT']完全相同。但按照惯例,它仍不得被使用。这个语法几乎被弃用了,我想在PHP5.3中有一段时间实际上已经被弃用了。谢谢@nikic提供的额外信息,我不知道这一点。
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");
?>