![](/img/trans.png)
[英]how can we call one class's method through another class's object in 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的线的任务。 矩形必须使用Line对象打印出长度为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类中的方法stampaRettangolo可能存在错误,但我不明白它是什么。
您在class Rettangolo
拼写了__construct
。
这意味着new Rettangolo
不会调用您的方法,因此不会设置内部变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.