如何在php中调用另一个类内的对象的方法?

时间:2015-09-21 19:45:02

标签: php

上周我开始用php编程,现在我正在做第一次练习。我已经学习了两年java,所以我对计算机编程有很好的了解。练习要求创建一个程序,用于打印由字符“*”组成的直线和矩形。这里有一个例子:

*****

**

********

**
**
**

*************
*************

***
***
***

现在我知道对于oop范例我不应该在模型类中使用任何println / echo方法,但是对于本练习我们只想测试php和java之间的差异,所以请原谅我,如果这个练习的解决方案没有似乎是正确的。 我们有两个类,Line和Rectangle非常简单: Line的任务是打印长度为l的行。 Rectangle必须使用Line对象打印长度为l和高度为h的矩形。

我必须打印长度为5,2,8的行和2x3,13x2,3x3的矩形,如示例中所示。 这里有我迄今为止开发的代码

SCRIPT CLASS

<?php

require_once 'Linea.php';
require_once 'Rettangolo.php';

$linea1 = new Linea(5);
$linea1->stampaLinea();

$linea2 = new Linea(2);
$linea2->stampaLinea();

$linea3 = new Linea(8);
$linea3->stampaLinea();

$rettangolo = new Rettangolo(2,3);
$rettangolo->stampaRettangolo();

$rettangolo2 = new Rettangolo(13,2);
$rettangolo2->stampaRettangolo();

$rettangolo3 = new Rettangolo(3,3);
$rettangolo3->stampaRettangolo();

CLASS LINE

<?php

class Linea {
    /**
     *
     * @var int
     */
    private $l;

    function __construct($l) {
        $this->l = $l;
    }
    function getLinea() {
        return $this->l;
    }

    function setLinea($linea) {
        $this->l = $linea;
    }

    public function stampaLinea(){
        for ($index = 0; $index < $this->l; $index++) {
            echo "*";
        }
        echo "\n";
    }

}

CLASS RECTANGLE

<?php

class Rettangolo {
    /**
     *
     * @var Linea
     */
    private $linea;
    /**
     *
     * @var int
     */
    private $altezza;

    function __contruct($lunghezza, $altezza){
        $this->linea = new Linea($lunghezza);
        $this->altezza = $altezza;
    }

    function stampaRettangolo(){
        for ($index = 0; $index < $this->altezza; $index++) {
            $this->linea->stampaLinea();
        }
    }
}

问题是我可以打印线而不是矩形。解释器给出了这个错误:致命错误:在第33行的“项目路径”中调用null成员函数stampaLinea()

可能在Rettangolo类中的方法stampaRettangolo中有一个错误,但我无法理解它是什么。

1 个答案:

答案 0 :(得分:3)

class Rettangolo中你拼错了new Rettangolo

这意味着{{1}}没有调用您的方法,因此未设置内部变量。