Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 链接相关类,但不扩展_Php_Class - Fatal编程技术网

Php 链接相关类,但不扩展

Php 链接相关类,但不扩展,php,class,Php,Class,我有两个PHP类,ResultCounter和ResultDetail,第一个依赖于第二个,但第二个不依赖于第一个。我突然想到,这些类应该以某种方式进行正式链接,但我不知道如何做到这一点 我曾考虑将第一个类作为第二个类的子类,但这不起作用,因为第一个类有很多(但数量有限)第二个实例 下面是这两门课的基础知识,让你了解我在说什么 class ResultCounter { private $W; private $L; private $D; private $T;

我有两个PHP类,
ResultCounter
ResultDetail
,第一个依赖于第二个,但第二个不依赖于第一个。我突然想到,这些类应该以某种方式进行正式链接,但我不知道如何做到这一点

我曾考虑将第一个类作为第二个类的子类,但这不起作用,因为第一个类有很多(但数量有限)第二个实例

下面是这两门课的基础知识,让你了解我在说什么

class ResultCounter {
    private $W;
    private $L;
    private $D;
    private $T;
    private $A;
    private $X;
    private $B1;
    private $B2;

    function __construct() {
        $this->W = new ResultDetail;
        $this->L = new ResultDetail;
        $this->D = new ResultDetail;
        $this->T = new ResultDetail;
        $this->A = new ResultDetail;
        $this->X = new ResultDetail;
        $this->B1 = new ResultDetail;
        $this->B2 = new ResultDetail;
    }

    // some other functions
}

class ResultDetail {
    public $count = 0;
    public $batfirst;
    public $batsecond;

    // some functions but don't ever reference ResultCounter
}
有时还需要在项目中有一个单独的
ResultDetail
实例


是否有一种链接这些类的方法使得
ResultCounter
显式依赖于
ResultDetail
?在构造函数中定义实例就足够了,还是我不必担心这个问题?

我不必担心。在任何应用程序中,类都将依赖于其他类。如果它们保存在同一个源树中,那么通常会假设它们可能是依赖的。在任何情况下,如果
ResultDetail
由于任何原因丢失,当有人试图构造
ResultCounter
时,PHP会给他们一个错误,说它找不到
ResultDetail

紧密耦合(您已经有了)通常被认为是不好的做法。为什么要添加进一步的“链接”?我会选择另一种方式,并考虑使用<代码>结果计数器< /C>类在构造函数中使用<代码> IResultDetailFactory < /代码>。