从另一个类调用函数

时间:2014-03-13 11:01:12

标签: php

我试图从另一个名为square function area的类调用一个函数到cuboid类。

abstract class Shapes
{
protected $name;
protected $colour;

function __construct($n, $c)
{
    $this->name   = $n;
    $this->colour = $c;
}

三江源!

2 个答案:

答案 0 :(得分:0)

首先:至少你应该修复这个方法:

function callclassA()     {
    $area1=0;
    $classA = new Square();
    $area1 = $area1 + $classA->area();
}

这并不意味着整体会起作用,但至少你不会试图调用非对象的方法。

第二,callclassA()方法正在创建并填充变量,但它没有返回任何内容,并且它不会将结果保存在类变量中。尝试像

这样的东西会更好
class Cuboid extends Shapes
{
private $square=null;
private  $area=null;
function __construct($n, $c, $s, $ns)
    {
    parent::__construct($n, $c);   
    $this->square=new Square("Square",  $c, $s, $ns);
    $this->area = $this->square->area();
    }

    public function area()
    {
        return (6* $this->area);
    }
    public function perimeter()
    {
        return (9* $this->area);
    }   
}

第三:你确定长方体的周长是方形面积的9倍吗?不应该是方形周长的东西吗?

答案 1 :(得分:0)

独立课程不应该分享数据,不可能以任何理智的方式进行。相反,提供一个适配器方法,从正方形转换为长方体:

class Square {

    protected $s;

    ...

    public function getSideLength() {
        return $this->s;
    }

}

class Cuboid {

    ...

    public static function fromSquare(Square $square) {
        return new static($square->getSideLength());
    }

}

$square = new Square(...);
$cube   = Cuboid::fromSquare($square);

您的代码太复杂,无法对其进行详细修改,但这有可能让您有所了解。