gpt4 book ai didi

php - 在 Controller 或模型中删除文件方法?

转载 作者:行者123 更新时间:2023-12-02 04:39:54 25 4
gpt4 key购买 nike

我正在使用 Laravel 4 制作一个网络应用程序,在这个应用程序中我有一些文章。每篇文章都有多个图像。现在,当我要删除一篇文章时,我也必须删除属于该文章的imagse。我想知道,我应该把图像删除方法放在哪里。我可以把它放在文章 Controller 、图像 Controller 或图像模型中。

因为我还必须能够在不触及文章的情况下单独删除图像,所以让文章 Controller 删除文件是没有意义的。那么放在哪里呢?图像模型或图像 Controller ?我认为图像模型。

编辑:我使用 Laravel ORM,所有文章都链接到他们的图片。删除一篇文章也会从数据库中删除所有图像。我只是想知道,从文件系统删除应该去哪里..

最佳答案

首先,模型是一个。它不是复数形式——您可以在这里阅读更多相关信息:php - How should a model be structured in MVC? .

如果您使用的是 MySQL 数据库,您可以查看 ON CASCADE DELETE - 这将删除数据库中与文章相关的所有图像。如果您不想在数据库端执行此操作,您可以查看 Entity\Repository pattern ,这可以很容易地通过使用像 Doctrine 这样的 ORM 来实现。 .这将允许您为 ON CASCADE DELETE 的 php 端版本注释您的“实体”(具有类成员、属性和一些 getter/setter 的域对象)。

您的 Controller 应该不执行任何业务逻辑。在您的模型层执行此操作 - 这意味着您的 Controller 将仅调用方法并从模型层获取响应

最后,链接您的文章和图像(实体)在数据库中或通过 ORM 的注释(例如,原则),这样当您删除一个时,其他的也会为您删除.

最后,如果这对您来说太多了,请在执行文章(实体)删除(存储库)时将删除图像的代码放在同一个文件中。


补充:如果图像路径没有存储在数据库中,而你真的想删除一个物理文件,你应该用Single Responsibility编写一个外部服务(类)处理文件删除。删除文章的代码将调用此服务。这意味着您的代码将更易于测试,并且您可以抛出自定义异常以确定出现问题(例如无法删除图像)。

关于php - 在 Controller 或模型中删除文件方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com