arobs / laravelmodules
Laravel 5 模块
Requires
- php: >=5.4.0
- illuminate/config: >=5.0.0
- illuminate/filesystem: >=5.0.0
- illuminate/routing: >=5.0.0
- illuminate/support: >=5.0.0
- mustache/mustache: ~2.6
Requires (Dev)
- codeception/codeception: ~2.0.0
- phpspec/phpspec: ~2.0.0
This package is not auto-updated.
Last update: 2024-09-24 03:54:27 UTC
README
这是一个用于模块化的 Laravel 5 包,其中包含 Caffeinated Modules 和 Laracasts Commander 包
Caffeinated Modules
所有初始发布的功能已经完成,如路线图中概述。我只是在等待 Laravel 5.0 正式发布,然后将其标记为稳定版 v1.0。在此期间,我将继续清理现有的代码。
要了解有关此包的更多信息,请参阅完整的文档。下面提供了快速安装说明。
安装
首先,通过 Composer 安装此包。最佳方法是使用终端通过 Composer 本身进行操作
composer require caffeinated/modules
此操作完成后,只需将服务提供者和外观类添加到项目中的 config/app.php
文件
服务提供者
'Caffeinated\Modules\ModulesServiceProvider'
外观
'Module' => 'Caffeinated\Modules\Facades\Module'
新的 Artisan 命令
php artisan module:controller ModuleName ControllerName
就这样!有了咖啡,开始构建一些酷炫的模块吧!
Laravel Commander
此包提供了一种简单的方式来利用 Laravel 项目中的命令和领域事件。
安装
像往常一样,通过 Composer 安装 Commander。
"require": { "laracasts/commander": "~1.0" }
接下来,更新 app/config/app.php
以在提供者数组中包含对包提供者的引用。
'providers' => [ 'Laracasts\Commander\CommanderServiceProvider' ]
使用方法
最重要的建议是记住这种方法并不适用于所有情况。如果您正在构建一个没有太多业务逻辑的简单 CRUD 应用程序,那么您可能不需要这个。仍然想继续?好的 - 前进!
目标
想象一下,您正在为招聘广告应用程序构建应用程序。现在,当雇主发布新的招聘广告时,需要发生很多事情,对吧?好,不要把所有这些事情都放到您的控制器中!相反,让我们利用命令、处理程序和领域事件来清理我们的代码。
控制器
首先,我们可以将此包的 CommanderTrait
注入到您的控制器中(或如果您愿意,BaseController)。这将为您提供一些帮助程序方法来管理将命令传递给命令总线的过程。
<?php use Laracasts\Commander\CommanderTrait; class JobsController extends \BaseController { use CommanderTrait; /** * Publish the new job listing. * * @return Response */ public function store() { } }
好吗?接下来,我们将这个“指令”(发布招聘广告)表示为一个命令。这仅仅是一个简单的 DTO。
<?php use Laracasts\Commander\CommanderTrait; use Acme\Jobs\PostJobListingCommand; class JobsController extends \BaseController { use CommanderTrait; /** * Post the new job listing. * * @return Response */ public function store() { $this->execute(PostJobListingCommand::class); return Redirect::home(); }
注意我们是如何将用户的指令(或命令)表示为一个可读的类的:PostJobListingCommand
。execute
方法将期望命令的类路径,作为字符串。上面,我们使用有用的 PostJobListingCommand::class
来获取它。或者,您也可以手动将路径作为字符串写出来。
命令 DTO
很简单,对吧?我们创建一个命令来表示指令,然后将该命令扔到命令总线中。下面是这个命令可能的样子
<?php namespace Acme\Jobs; class PostJobListingCommand { public $title; public $description; public function __construct($title, $description) { $this->title = $title; $this->description = $description; } }
当您在
CommanderTrait
上调用execute
方法时,它将自动将来自Input::all()
的数据映射到您的命令。您不需要手动进行此操作。
那么命令总线到底做什么呢?把它想象成一个简单的工具,它将这个命令转换为一个相关的处理程序类,该处理程序类将处理命令!在这种情况下,这意味着根据需要委派发布新的招聘广告。
默认情况下,命令总线将对命令类名称进行快速搜索和替换,以确定从IoC容器中解析哪个处理类。因此
- PostJobListingCommand => PostJobListingCommandHandler
- ArchiveJobCommand => ArchiveJobCommandHandler
明白了?好的。但请注意,如果您更喜欢不同的命名约定,可以覆盖默认设置。请参见下文。