我想为一个对象的属性赋值.我认为它应该是这样的:
$object->property = "value";
Run Code Online (Sandbox Code Playgroud)
所以,在我的情况下,我做:
$circle_obj->radius = 4;
Run Code Online (Sandbox Code Playgroud)
所以,我预计属性半径应为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
?>
Run Code Online (Sandbox Code Playgroud)
你不应该使用global,而是$this这样:
public function calcSurface(){
return M_PI * ($this->radius * $this->radius);
}
Run Code Online (Sandbox Code Playgroud)
查看PHP OOP教程以获取更多信息.
并查看变量范围教程以更好地理解global关键字.