在PHP OOP中,如何从类的外部给公共属性赋值


How to assign a value to public properties from outside of the class in PHP OOP

我想给一个对象的属性赋值。我觉得应该是这样的:

$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关键字。