如果有人有想法,我想不出更好的方法来解决这个问题。
我会尽量不使解释复杂化。
我正在写一个作为主类的“引号”类。此类具有“整体”功能,可根据存储在其数组中的“项目”进行计算。可以这么说,最终开发人员将其称为$q = new apiQuote/quote()
.
然后,在它有任何用途之前,必须添加第一项并设置它的属性,以便它可以进行“自己的”计算。类似的东西$q->createItem()
。使用此调用创建项目后,将“项目”类的“项目”添加到名为“项目”的“引号”中的数组中。
当前可编辑的项目$q->item
始终是通过该createItem
方法添加到数组中的最后一个项目。看起来像:
public function createNewItem() {
$this->items[] = new item();
$this->item = $this->items[count($this->items)-1];
}
我添加了setItem
方法,其中参数将是一个整数,表示数组中的项目索引,并将设置$q->item
为选择的项目索引。这行得通,但似乎仍然“不如我想的那样富有成效”。
我很好奇的是,是否有人对解决此问题的更好方法有任何建议。我试着寻找一个“卡片/甲板”的 php 示例,但我能找到的只是数组洗牌,这在这里有点没用。我知道如何在 .NET 中进行此类关联,并认为这同样容易,但我在 PHP 中没有与 .NET 语言相同的属性能力,因此否定了我在创建时所习惯的这种“类/子类[项目]”类型的结构。
真的,我只想知道是否有人做过类似的事情,以及我是否正在尽“最大能力”做事,或者是否有更好的方法,通过 PHP,允许“最终开发人员”调用一个主类并基于子类创建一个列表“项目”,以后可用于主类的方法?
我真的希望这能很好地总结这一切,并且我没有超出“提问”的指导方针,但我想不出更好的地方,除了代码审查提出这样一个问题并获得优秀的开发人员反馈。如果你们都觉得我需要将其移至代码审查,请告诉我。我选择这个而不是 CR 的主要原因是这个站点往往会得到更快的响应。
也许是对我所拥有的以及我“可能”希望看到的东西的看法:
现在的工作方式
$q = new apiQuote\quote(TRUE);
$q->createNewItem();
$q->item->totalHeight = 100;
$q->item->totalWidth = 250;
...
$q->createNewItem();
$q->item->totalHeight = 300;
$q->item->set_coverage('25%');
...
$q->setItem(1);
$q->item->totalHeight = 250;
...
$q->getTotalsCurv(); // an array to create a graph curve of totals from each item
我“认为”我可能会喜欢:
$q = new apiQuote\quote(TRUE);
$q->items[] = new apiQuote\item();
$q->items[0]->totalHeight = 100;
$q->items[0]->totalWidth = 250;
...
$q->items[] = new apiQuote\item();
$q->items[1]->totalHeight = 300;
$q->items[1]->set_coverage('25%');
...
$q->items[0]->totalHeight = 250;
...
$q->getTotalsCurv();
但是,类似于第二个想法的意思是让“项目”数组公开,这可能会导致大量“其他”问题,因为我正试图将整个事情设置为“接近虚拟证明”。因此,使用protected
具有特定方法的变量get/set
就好像它们在 C# 属性中一样。