PHPackages                             yesccx/laravel-preparation - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. yesccx/laravel-preparation

ActiveLibrary[HTTP &amp; Networking](/categories/http)

yesccx/laravel-preparation
==========================

laravel http preparation

v1.0.1(3y ago)06.0kMITPHPPHP ^8.1.0

Since Apr 7Pushed 3y ago1 watchersCompare

[ Source](https://github.com/yesccx/laravel-preparation)[ Packagist](https://packagist.org/packages/yesccx/laravel-preparation)[ Docs](https://github.com/yesccx/laravel-preparation)[ RSS](/packages/yesccx-laravel-preparation/feed)WikiDiscussions 1.x Synced 1mo ago

READMEChangelogDependencies (1)Versions (3)Used By (0)

Laravel-Preparation
===================

[](#laravel-preparation)

Laravel Http 前置处理器

[![For Laravel 5](https://camo.githubusercontent.com/6f68f16ce18e7468ec2bf463ae6b902dc2e186030d484981174dcb8e7981a5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d392e2a2d677265656e2e737667)](https://github.com/yesccx/laravel-preparation)[![Latest Stable Version](https://camo.githubusercontent.com/e367ffc9cfd7a7df21a4e2b15f8b65681c876eab00ec1b6af309944f065c431f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7965736363782f6c61726176656c2d7072657061726174696f6e2e737667)](https://packagist.org/packages/yesccx/laravel-preparation)[![Latest Unstable Version](https://camo.githubusercontent.com/fddab321fd720eb703f06b0039d87a80ef2c40b99fb104920aa4e84f590629f6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f767072652f7965736363782f6c61726176656c2d7072657061726174696f6e2e737667)](https://packagist.org/packages/yesccx/laravel-preparation)[![Total Downloads](https://camo.githubusercontent.com/959bcf6287498f0f1fa7863c3665fbc32e77c256ebd6b22a920eba7d69c134c2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f7965736363782f6c61726176656c2d7072657061726174696f6e2e7376673f6d61784167653d32353932303030)](https://packagist.org/packages/yesccx/laravel-preparation)[![License](https://camo.githubusercontent.com/93922aecabf504fc514a8219092d15a9c4e7978d1f4d669918f7fdf4805d4816/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f7965736363782f6c61726176656c2d7072657061726174696f6e2e7376673f6d61784167653d32353932303030)](https://packagist.org/packages/yesccx/laravel-preparation)

目录
==

[](#目录)

- [目录](#%E7%9B%AE%E5%BD%95)
- [安装](#%E5%AE%89%E8%A3%85)
    - [运行环境](#%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83)
    - [通过Composer引入依赖包](#%E9%80%9A%E8%BF%87composer%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96%E5%8C%85)
- [开始使用](#%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8)
    - [简介](#%E7%AE%80%E4%BB%8B)
    - [编写前置器](#%E7%BC%96%E5%86%99%E5%89%8D%E7%BD%AE%E5%99%A8)
    - [使用建议](#%E4%BD%BF%E7%94%A8%E5%BB%BA%E8%AE%AE)
- [License](#license)

安装
==

[](#安装)

运行环境
----

[](#运行环境)

运行环境要求PHP ^8.1.0Laravel Framework ^9.0通过Composer引入依赖包
---------------

[](#通过composer引入依赖包)

通过终端进入项目根目录，执行以下命令引入依赖包：

```
> composer require yesccx/laravel-preparation:1.x
```

开始使用
====

[](#开始使用)

简介
--

[](#简介)

通常情况下，我们的接口实现是对一系列资源进行 `增删改查` 操作，例如 `文章` 就是资源，我们可能会编写 `文章` 的 `创建` 、`更新` 、`状态变更`、`删除` 等接口。这类接口的实现都有一共同逻辑，就是在做具体操作之前都需要检索出资源，如查询 `文章表` 判断 `文章` 是否存在。前置器的职责就是处理这一部分逻辑，它可以在控制器处理业务逻辑之前做一些初始化的判断或处理。

与 `表单验证` 的区别是，`表单验证` 通常只对数据进行 `类型验证`、`有效性验证` 等，一般不涉及数据库查询操作，并且很难将验证过程中的一些中间数据暂存起来供后续业务逻辑处理时使用，而`前置器`很好的解决了这一问题。

编写前置器
-----

[](#编写前置器)

创建一个前置器类并继承 `Yesccx\Preparation\BasePre` 基类，同时在 `handle` 方法中实现需要前置处理的逻辑，其中 `handle` 方法支持依赖注入，最终我们可以将处理过程中产生的中间数据或结果数据暂存到成员变量中，供后续业务使用。前置器还可以通过基类中的 `fail` 方法中止前置验证，`fail` 方法默认会抛出一个 `PreparationException` 异常。

```
