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


How to call a method of an object inside another class in php?

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

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

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

我必须打印长度为5,2,8的线条和2x3、13x2、3x3的矩形,就像示例中一样。这是我迄今为止开发的代码

脚本类

<?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();

分类线

<?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";
    }
}

类矩形

<?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类中的方法stampaRettangol可能有错误,但我不明白它是什么。

您在class Rettangolo中拼错了__construct

这意味着new Rettangolo没有调用您的方法,因此没有设置内部变量。