扩展类和未定义的变量 - PHP

Sho*_*cob 0 php

Square和Rectangle是扩展抽象类ShapesClass的类,定义了自己的Area方法.

    abstract class ShapesClass
    {
        // Force Extending class to define this method
        abstract public function Area();
    }

class Square extends ShapesClass
{
    private $side = 0;

    function __construct($n)
    {       
        $side = $n;     
    }

    function Area()
    {
        echo $side * $side;
    }
}

class Rectangle extends ShapesClass
{
    var $length = 0;
    var $width = 0;

    function __construct($a,$b)
    {
        $length = $a;
        $width = $b;
    }

    function Area()
    {
        echo $length * $width;
    }
}

$listShapes = array();
$listShapes[0] = new Square(3);
$listShapes[1] = new Rectangle(3,4);

$listShapes[0]->Area();
$listShapes[1]->Area();
Run Code Online (Sandbox Code Playgroud)

我在侧面,长度和宽度上得到未定义的变量错误.这三个变量不具有默认值,也由构造函数设置.

Ion*_*icu 5

你实际上想把它们称为 $this->foo

function __construct($a,$b)
{
    $this->length = $a;
    $this->width = $b;
}
Run Code Online (Sandbox Code Playgroud)

基本上$foo就像本地的,变量的,作用域的当前方法.$this->foo就像一个实例变量,它可以在类中的任何地方使用.