我有这个代码:
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变量的语法有什么问题,因为它返回空白?
感谢
答案 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'];