php-雄辩的ORM活动记录-这是正确的方法吗?
作者:互联网
我想自从我开始反叛并质疑我所学到的一切以来,我终于达到了代码青春期.我希望这里的某个人可以指出正确的方向.当前应该是简单而又简短的任务,最终要花费几个小时,因为我坐着凝视着几行代码,并质疑这是否确实是正确的方法…
这是一个例子.我们拥有一个系统,使用户可以创建帖子并在该帖子中提及某人.我们有一个控制器来获取请求,然后将其发送到PostService,该服务的方法如下:createPostByUser(int $id,string $title,string $content)并最终发送至$postingUser-> post($title, $string)保存帖子的位置.
在createPostByUser方法中,我们将检查是否有任何@mentions,然后将其传递给MentionService.因此,在这种情况下,我们将访问:$mentionService-> createMentionByUser(int $id,字符串$username,Mentionable $mentionable),然后检查提及用户($id)和提及的用户($username)是否存在或可能甚至如果提及已存在但已被软删除,请恢复.如果尚不存在且无法还原并且两个用户均有效,则我们将继续调用$mentioningUser-> mention($提及的用户),其中将保存提及.
尽管所有这些工作都有效,但我开始看到一些问题.什么会阻止新开发人员仅跳过服务层并直接进入用户对象并使用这些方法?我的意思是,在MentionService中,我们在保存提及之前先检查一切是否良好,例如检查所需的两个用户是否均有效,是否应该恢复提及.等等.是什么会阻止新的未知开发人员直接进入用户对象并仅仅创建新提及而无需三思而后行?
希望有人能指出正确的方向.我们在正确的轨道上吗?
我只是在想什么吗?
解决方法:
我认为无法以技术方式解决此问题.任何设计模式和任何建筑风格都可能以某种方式被误解和故意规避.此问题可能可以在组织层(在您的团队中)解决.一种可能性是,例如代码审查,培训和文档编制.最重要的是带有分支和请求请求的代码审查.随着时间的流逝,您可以为新开发人员获得学习效果,并防止新的失败.
标签:laravel,activerecord,eloquent,php,database 来源: https://codeday.me/bug/20191109/2012946.html