[英]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.