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

Jul*_*ian 0 php oop

我想为一个对象的属性赋值.我认为它应该是这样的:

$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)

Tom*_*ers 5

你不应该使用global,而是$this这样:

public function calcSurface(){
  return M_PI * ($this->radius * $this->radius);
}
Run Code Online (Sandbox Code Playgroud)

查看PHP OOP教程以获取更多信息.

并查看变量范围教程以更好地理解global关键字.