我想给一个对象的属性赋值。我觉得应该是这样的:
$object->property = "value";
所以,在我的例子中,我这样做:
$circle_obj->radius = 4;
所以,我期望属性半径应该是4。不幸的是,我的情况并非如此。你能理解为什么吗?
下面你可以看到我的代码。
<?php
class BaseClass{
public function calcSurface(){
//empty method
}
}
class Subclass_Circle extends BaseClass{
public $radius;
public function calcSurface(){
global $radius;
return M_PI * ($radius * $radius);
}
}
$circle_obj = new Subclass_Circle();
$circle_obj->radius = 4;
echo "Oppervlakte van circle is: " . $circle_obj->calcSurface(); //ouput: 0
echo "<br>";
class Subclass_Square extends BaseClass{
public $width;
public $height;
public function calcSurface(){
global $width;
global $height;
return $width * $height;
}
}
$square_obj = new Subclass_Square();
$square_obj->width = 4;
$square_obj->height = 4;
echo "Oppervlakte van vierkant is: " . $square_obj->calcSurface(); //output: 0
?>
您不应该使用global
,而应该使用$this
,如下所示:
public function calcSurface(){
return M_PI * ($this->radius * $this->radius);
}
查看PHP OOP教程获取更多信息。
并查看变量作用域教程,以更好地理解global
关键字。