【发布时间】:2018-07-24 00:45:06
【问题描述】:
自从我开始反抗并质疑我所学的一切以来,我认为我终于进入了代码青春期。我希望这里有人能指出我正确的方向。目前,什么应该是简单而简短的任务,最终要花费数小时,因为我坐着盯着几行代码并质疑这是否确实是正确的方法......
这是一个例子。我们有一个系统可以让User 在该帖子中创建Post 和Mention 某人。我们有一个控制器来获取请求,然后将其发送到 PostService,该 PostService 具有如下方法:createPostByUser(int $id, string $title, string $content),最终发送到保存帖子的$postingUser->post($title, $string)。
在 createPostByUser 方法中,我们将检查是否有任何@mentions,然后我们会将其传递给 MentionService。因此,在这种情况下,我们将访问:$mentionService->createMentionByUser(int $id, string $username, Mentionable $mentionable) 然后检查提及用户 ($id) 和提及用户 ($username) 是否存在,或者甚至可能恢复提及(如果存在但被软删除)。如果它不存在并且无法恢复并且两个用户都有效,那么我们将继续调用 $mentioningUser->mention($mentionedUser) 来保存提及。
虽然所有这些都有效,但我开始发现它存在一些问题。什么会阻止新开发人员跳过服务层直接进入用户对象并使用这些方法?我的意思是,在 MentionService 中,我们在保存提及之前检查一切是否正常,例如检查需要的两个用户是否有效,是否应该恢复提及。等等。什么会阻止一个新的不知情的开发人员直接进入用户对象并不加思索地创建一个新的提及?
希望有人能指出我正确的方向。我们在正确的轨道上吗?
我只是想太多了吗?
【问题讨论】:
标签: php database laravel activerecord eloquent