我在程序 PHP 中编写了一个“评论”和“回复”系统的工作实现。我想学习 OOP,所以我将按照 SOLID 原则将我的旧代码转换为 OOP。在我正在阅读的一本书中,作者说一个班级应该做“一件事”并且只做一件事。
在我的评论和回复系统中,我动态生成了几个具有相同类名但不同“id”的“div”元素。我正在生成的一个例子可以在这里看到。
我想将我的代码分解为函数,以便我可以更轻松地维护它,但我无法理解执行此操作的最佳方法。例如,我有几个嵌套的 div:
<div class="content">
<div class="photoContainer" id="1"> <img src="http://placekitten.com/200/200" /> </div>
<div class="commentReplyContainer" id="1">
<div class="commentBox" id="1">
<form method="post">
<textarea name="comment"></textarea>
<input type="submit" />
</form>
</div>
<div class="commentEven">Hello I am a comment!</div>
</div>
</div>
<div class="content">
<div class="photoContainer" id="2"> <img src="http://placekitten.com/200/300" /> </div>
<div class="commentReplyContainer" id="2">
<div class="commentBox" id="2">
<form method="post">
<textarea name="comment"></textarea>
<input type="submit" />
</form>
</div>
<div class="commentEven">Hello I am another comment!</div>
</div>
</div>
其中一些divs
像photoContainer
div 一样立即关闭。此外,commentBox
在里面添加表单后,div 也会立即关闭。我看到的问题是,在将content
所有内容添加到其中之后,该 div 已关闭,commentReplyContainer
. 因此,如果我遵循 SOLID 原则将其转换为 OOP 代码,我应该有一个生成 div 的类content
,另一个生成 div 的类photoContainer
等等?如果我使用该方法,那么我将不得不编写一个生成content
div 但不关闭它的类,生成photoContainer
具有预期内容的 div 并关闭它,然后有一个名为 last 的类将关闭content
div。我是否正确,因为这是我能够以我想要的方式嵌套我的 div 的唯一方法?
<?php
class CreateCommentSystem {
public function generateContentDiv(){
$content = <<<EOF
<div class="content" style="background-color: #302058; width: 100px; height: 200px">
EOF;
echo $content;
}
public function generatePhotoContainer(){
$photoContainer = <<<EOF
<div class="photoContainer" style="background-color: #df5320; width: 40px; height: 20px"> </div>
EOF;
echo $photoContainer;
}
public function closeContentDiv() {
$closeContentDiv = <<<EOF
</div>
EOF;
echo $closeContentDiv;
}
}
?>
然后执行为
$divs = new CreateCommentSystem;
$divs->generateContentDiv();
$divs->generatePhotoContainer();
$divs->closeContentDiv();
我是在正确的轨道上还是我的理解完全错误?也许有一种更好的方法,我不知道有人可以指出。我希望我对自己的解释足够好,让你明白我在问什么。