我还处于PHP和Laravel 5的学习阶段,自从我升级到L5后,我在代码所属的地方挣扎。有这么多文件和文件夹似乎具有相同的目的或至少非常相似。有命令,控制器,事件,服务,请求等。我举例说明我的工作流程以及放置代码的地方,我希望你们可以发表评论并纠正/帮助我。
我想在我的应用程序中注册一个新用户,并在他成功注册后发送欢迎电子邮件。
好的,我们来讨论一些逻辑:
请求:验证指定请求的数据
服务:服务“做”某事。例如,它正在向数据库发出请求。
所以这就是我的理解。请帮助我,并向我提供信息。
谢谢, LUMA
答案 0 :(得分:3)
你的问题有点模糊,可能会因为“过于宽泛”而引起人们的反对。那就是说,这是我对此的看法......
我看到的最大问题是你的应用程序结构与推荐的L5结构 - 甚至是标准的MVC结构 - 非常不同,难怪你会感到困惑。
让我们谈谈你的“逻辑”部分:
控制器 - 您在这里正确的方向。控制器是模型和视图之间的粘合剂。它可以执行某些处理,但大多数应该卸载到处理特定任务的类。
请求 - 这是什么? L5包括Request
类,其中包括检查从客户端接收的HTTP请求的方法。你在谈论继承那个吗?为什么?如果您对“请求”类的想法主要与检查输入有关,那么您可以在模型中执行此操作(即,在将其粘贴到数据库之前验证内容)或在控制器中执行(请参阅L5 docs on controller validation)< / p>
服务 - 再次,这是什么?您谈到“向数据库发出请求”,但L5为此提供了一个类(DB
)。在更高级别,数据库访问应主要通过模型完成,这些模型抽象出大多数低级数据库访问。至于其他服务,我通常做的是创建库来执行特定处理。例如,我的应用程序有一个特定的第三方项目管理应用程序,它通过API访问。我有一个库,使用getProject
或createProject
等方法。
事件 - 事件是一种确保在事件发生时调用某些代码的方法,而不会产生太多麻烦。听起来你对事件有正确的想法。
命令 - 再次,听起来您对命令有基本的了解。
存储库 - 这些是抽象资源(主要是数据库,但它也可以应用于其他资源)和使用该资源的代码之间的连接的方式。如果您(例如)决定在将来更改数据库服务器,这将提供一种更轻松地切换底层资源的方法。它们是可选的。
您还没有提及任何关于模型的内容。 L5提供了一种通过Eloquent
模型以易于理解的方式处理数据的绝佳方式 - 这将使您的生活更多更容易。
我的建议是:从小做起。使用L5构建一个简单的MVC应用程序 - 一个模型(用于保存一些数据),一个视图(用于显示数据)和一个控制器(通过处理客户端请求将模型和视图放在一起)。一旦你有了,就开始扩展它。
有一些教程可以为你提供Laravel的这个基本结构 - 大部分是Laravel 4,但看看你是否可以按照基本的想法为Laravel 5构建类似的东西。