action跳转控制器 php_PHP 程序结构设计:使用 Action 重构你的控制器

在 Spatie 的最新项目中,我们已经开始使用称为动作 (Action) 的概念。它使我们的控制器和模型保持苗条。这是一个简单的实践。我将在这篇文章中解释。

来自控制器和模型中的逻辑

考虑你又一个用 Laravel 开发的博客,您想在上面发布帖子。帖子发布后,应用会将它的标题和链接关联到推特。

执行该操作的控制器可能如下所示:

class PostsController

{

public function create()

{

// ...

}

public function store()

{

// ...

}

public function edit()

{

// ...

}

public function update()

{

// ...

}

public function delete()

{

// ...

}

public function publish(Post $post, TwitterApi $twitterApi)

{

$post->markAsPublished();

$twitterApi->tweet($post->title . PHP_EOL . $post->url);

flash()->success('Your post has been published!');

return back();

}

}

对我而言,非 CRUD 行为存在控制器中显得有点脏乱。让我们遵循 Adam’s advice 的建议,将 publish 方法放到它自己的控制器中。

class PublishPostController

{

public function __invoke(Post $post, TwitterApi $twitter)

{

$post->markAsPublished();

$twitter->tweet($post->title . PHP_EOL . $post->url);

flash()->success('Your post has been published!');

return back();

}

}

这已经比刚才好一点了,但是我们可以做的更好。加入你想要创建一个发布博文的命名。目前而言是不可能的,因为相关逻辑放置于控制器中。

为了相关逻辑可以从命令行(或应用的任何地方)调用,该逻辑不应该在控制器中。理想状态下,控制器唯一要做的就是处理 HTTP 层

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值