Php 是否删除控制器或模型中的文件方法?

Php 是否删除控制器或模型中的文件方法?,php,model-view-controller,laravel,Php,Model View Controller,Laravel,我正在用Laravel 4制作一个web应用程序,在这个应用程序中我有一些文章。每篇文章都有多个图像。现在,当我想删除一篇文章时,我还必须删除属于该文章的imagse。我想知道,我应该把图像删除方法放在哪里。我可以把它放在文章控制器、图像控制器或图像模型中 由于我还必须能够在不接触文章的情况下单独删除图像,因此让文章控制器删除文件是没有意义的。那么把它放在哪里呢?图像模型还是图像控制器?我认为是形象模型 编辑:我使用Laravel ORM,所有文章都链接到它们的图像。删除一篇文章也会删除数据库中

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

由于我还必须能够在不接触文章的情况下单独删除图像,因此让文章控制器删除文件是没有意义的。那么把它放在哪里呢?图像模型还是图像控制器?我认为是形象模型


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

ImageModel将是正确的位置。向ArticleModel添加一个delete方法,在该方法中,它将在所有相关图像上循环,调用delete方法,然后删除自身

<?php 
    class ArticleModel {
        public function getImages() {
            //fetch your images
            return $images;
        }

        public function delete() {
            foreach($this->getImages() as $image) {
                $image->delete();
            }
            $this->delete();
        }

这完全取决于您和您的应用程序

有些人喜欢瘦模特,胖控制器,反之亦然。也有人会把类似的东西放在一个库中,尽管大多数应用不需要额外的分离层

我认为有时程序员花更多的时间考虑把代码放在哪里,而不是实际编写代码

我知道为了代码的可读性等需要分离,但通常情况下,除了工作和显示逻辑的分离之外,任何东西都是多余的。我的2便士


我个人的意见。瘦控制器。让它让周围的流量反弹,就这样吧。任何类似的东西都应该放在你的模型中,或者如果你需要一个库的话。

首先,模型是一个层。它不是多元化的-你可以在这里阅读更多关于这方面的内容:

如果您使用的是MySQL数据库,您可以查看CASCADE DELETE上的
——这将删除数据库中与文章相关的所有图像。如果您不想在db端执行此操作,您可以查看,这可以通过使用类似ORM的工具轻松实现。这将允许您在CASCADE DELETE上为php端版本的
注释“实体”(带有类成员、属性和一些getter/setter的域对象)

您的控制器应该执行无业务逻辑。在模型层中执行此操作-这意味着您的控制器将只调用方法并从模型层获取响应

总之,在数据库中或通过ORM的注释(例如,条令)链接您的文章和图像(实体),这样当您删除其中一个时,其他的都会为您删除

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


另外:如果映像路径没有存储在数据库中,并且您确实想要删除一个物理文件,那么您应该编写一个具有处理文件删除功能的外部服务(类)。删除文章的代码将调用此服务。这意味着您的代码将更易于测试,您可以抛出自定义异常以确定出现了错误(例如无法删除图像)