PHP才学没几天写了段代码 大家参考下为什么运行结果会有不同。大家帮忙解释下原因程序A:class ClassA {
private $name; function __construct($n){
echo "构造函数开始"."<br>";
$this->name = $n;
}
function __set($name,$v){
$this->name = $v;
} function __get($name){
return $this->name;
}
function destruct(){
}
}$classA = new ClassA('name的初始值');
echo $classA->$name."<br>";
$classA->$name = "name的改变值";
echo $classA->$name;
?>输出结果为:(这个结果可以理解)
构造函数开始
name的初始值
name的改变值程序B:(在程序A基础上做了改动标注为红色)
class ClassA {
private $name; function __construct($n){
echo "构造函数开始"."<br>";
$this->name = $n;
}
function __set($name,$v){
$this->name = $v;//更改为$this->$name = $v
} function __get($name){
return $this->name;
}
function destruct(){
}
}$classA = new ClassA('name的初始值');
echo $classA->$name."<br>";
$classA->$name = "name的改变值";
echo $classA->$name;
?>
输出结果为:
构造函数开始
name的初始值
name的初始值谁能帮忙解释下?
private $name; function __construct($n){
echo "构造函数开始"."<br>";
$this->name = $n;
}
function __set($name,$v){
$this->name = $v;
} function __get($name){
return $this->name;
}
function destruct(){
}
}$classA = new ClassA('name的初始值');
echo $classA->$name."<br>";
$classA->$name = "name的改变值";
echo $classA->$name;
?>输出结果为:(这个结果可以理解)
构造函数开始
name的初始值
name的改变值程序B:(在程序A基础上做了改动标注为红色)
class ClassA {
private $name; function __construct($n){
echo "构造函数开始"."<br>";
$this->name = $n;
}
function __set($name,$v){
$this->name = $v;//更改为$this->$name = $v
} function __get($name){
return $this->name;
}
function destruct(){
}
}$classA = new ClassA('name的初始值');
echo $classA->$name."<br>";
$classA->$name = "name的改变值";
echo $classA->$name;
?>
输出结果为:
构造函数开始
name的初始值
name的初始值谁能帮忙解释下?
最好你copy/paster过来,
你现在贴的东西是无法得出你的结果的$classA = new ClassA('name的初始值');
echo $classA->$name."<br>";
$classA->$name = "name的改变值";
echo $classA->$name;
$classA->$name = "name的改变值";
echo $classA->$name;
因为 $name 没有赋值类定义应该这样
class ClassA {
private $name;
function __construct($n){
echo "构造函数开始"."<br>";
$this->name = $n;
}
function __set($name,$v){
$this->$name = $v;
}
function __get($name){
return $this->$name;
}
}你还可以用 print_r($classA);
查看执行后的类属性分配情况
$classA->$name和$classA->name是不同的:
比如 $name = 'var';
$classA->$name => $classA->var;
$classA->name => $classA->name;
请问
$classA->$name和$classA->name
这两种方式有什么不同有什么区别?