laravel开发模式求解

初学PHP求教,laravel的路由,控制器,模型操作都基本会了,除了服务容器、控制翻转、依赖注入什么的还在理解,现在最不明白的就是具体的功能实现应该写在哪里,比如我要写一个通用附件上传功能或短消息发送器之类,这个具体的功能实现应该写在哪里才能实现代码的重用,写在控制器、模型好像都不对,应该写在哪里,Facades?Contracts?求教,十分感谢;

阅读 5.9k
4 个回答

写在模型中,因为文件也是数据。当然,文件不方便放到数据库,所以数据库存放的是文件路径,那么文件存放并返回路径的活儿谁做呢?
当然是框架做,这个你只需要一行代码,所以没必要写成命令(command)。
综上所诉,写到模型里即可。

新手上路,请多包涵

Contracts 就是一套接口规范 建议你面向接口编程 方便你换个数据存储方式 缓存实现redis 还是memcache

翻译过来 是契约 合同 就是大家约定好的 比如缓存读取 设置 就一个get 一个set 不需自己再定义一套接口

通用附件上传功能或短消息发送器之类可以当成服务,你可以在app目录下新建Services目录,开发你需要的功能.
如果你的controller里需要上传功能,那么直接method injetion ,可以达到可重用/解耦/便于测试等

.....
use App\Services\UploadService;
    class ArticleController extends Controller {
    
            public function upload(UploadService $upload){
            
                ...//处理逻辑
            }
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题