<?phpclass a {
public $aa; public function fun1($v) {
$this->aa = 'abc';
return 'a_fun1 : '.$this->aa.$v.'<br>';
}
}$a = new a();
echo $a->fun1('111');
class b {
public $bb; public function fun1() {
$this->a->aa = 'edf'; // 如果没有这句,会返回 b_fun1 :
$this->bb = 'b_fun1 : '.$this->a->aa.'<br>';
return $this->bb;
} public function fun2() {
$this->a1 = new a(); // 这里为a1, 即不一定是对象a
return $this->a1->fun1('222');
}}$b = new b();
echo $b->fun1();
echo $b->fun2();?>结果为:a_fun1 : abc111
b_fun1 : edf
a_fun1 : abc222谁能解释一下???
error_reporting(E_ALL);
class a {
public $aa; public function fun1($v) {
$this->aa = 'abc';
return 'a_fun1 : '.$this->aa.$v.'<br>';
}
}$a = new a();
echo $a->fun1('111');
class b {
public $bb; public function fun1() {
//var_dump($this->a);
// 这里创建了一个空对象实例a,然后增加一个aa(值为edf)的属性
$this->a->aa = 'edf'; // 如果没有这句,会返回 b_fun1 :,没有这一句,什么都没有获取到,未设置的对象属性a和没有对象的属性aa在php最多有一个警告而已
//var_dump($this->a); // 2句var_dump注释去掉就可以看的很明白,和上面的对象a没有什么关系
$this->bb = 'b_fun1 : '.$this->a->aa.'<br>';
return $this->bb;
} public function fun2() {
// a1确实不是对象a,但它是对象a的一个实例
$this->a1 = new a(); // 这里为a1, 即不一定是对象a
return $this->a1->fun1('222');
}}$b = new b();
echo $b->fun1();
echo $b->fun2();?>
php是弱类型, 当你定义的变量不存在时会自动生成, 这个变量可以是任何类型,可以是类的对象, 变量任务值, 类的属性等等
如,
$this->a->aa = XXx; // 这些属性都会在你所定义的类里自动生成
$this->a1 = new a();
在php的低层(C语言)运行里有一个C结构变量存放着php脚本定义的所有变量和这变量的类型和值所以, 当你使用的 $this->a = XX; 不存在时, 会自动生成并赋值, 就像 $a = XX; 一样,