__set()函数和__get()函数,为何无法被调用到呢?(几行代码)我不知为什么,__set()和__get()函数总是不能得到调用,这是为什么呢?这两个函数,何时会被调用到呢?
书上说,这两个函数是构造函数一样呀,不是显式调用的,是被间接调用的呀?<?php
class myclass
{
public $p1;
public $p2; function __get($name)
{
echo "get被调用<br/>";
return $this->$name;
} function __set($name,$value)
{
$this->$name=$value;
echo "set被调用<br/>";
}}$a=new myclass;
$a->p2="p2的初值";
$t="p1";//以下这句会调用 __set()函数吗?
$a->$t="p1的值";//以下这句,会调用 __get()函数吗?
echo $a->$t;echo "<br/>";
$t="p2";//以下这句,会调用 __get()函数吗?
echo $a->$t;?>
书上说,这两个函数是构造函数一样呀,不是显式调用的,是被间接调用的呀?<?php
class myclass
{
public $p1;
public $p2; function __get($name)
{
echo "get被调用<br/>";
return $this->$name;
} function __set($name,$value)
{
$this->$name=$value;
echo "set被调用<br/>";
}}$a=new myclass;
$a->p2="p2的初值";
$t="p1";//以下这句会调用 __set()函数吗?
$a->$t="p1的值";//以下这句,会调用 __get()函数吗?
echo $a->$t;echo "<br/>";
$t="p2";//以下这句,会调用 __get()函数吗?
echo $a->$t;?>
我不明白,为何类中没有定义的变量,会调用 __set() __get() ,但是已有人变量,却不会调用呢?<?php
class myclass
{
public $p1; function __get($name)
{
echo "get被调用<br/>";
return $this->$name;
} function __set($name,$value)
{
$this->$name=$value;
echo "set被调用<br/>";
}
}$a=new myclass;//以下代码为何不会调用 __set() 呢?
$a->p1="p1 value";
echo $a->p1;
echo "<br/>";//以下代码为何会调用 __set() 呢?
$a->pnew="pnew value";
echo $a->pnew;
echo "<br/>";//以下代码为何会调用 __get()
echo $a->pnewnew;
?>
书上说,这两个函数是构造函数一样呀,不是显式调用的,是被间接调用的呀?<?php
class myclass
{
public $p1;
public $p2; function __get($name)
{
echo "get被调用<br/>";
return $this->$name;
} function __set($name,$value)
{
$this->$name=$value;
echo "set被调用<br/>";
}}$a=new myclass;
$a->p2="p2的初值";
$t="p1";//以下这句会调用 __set()函数吗?
//这里我的理解是$temp=$a->$t;$temp="p1的值";
$a->$t="p1的值";//以下这句,会调用 __get()函数吗?
//这里应该调用
echo $a->$t;echo "<br/>";
$t="p2";//以下这句,会调用 __get()函数吗?
//这里应该调用
echo $a->$t;?>