PHPackages                             anthony/structure - 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. [Framework](/categories/framework)
4. /
5. anthony/structure

ActiveLibrary[Framework](/categories/framework)

anthony/structure
=================

an Structure for laravel

246PHPCI failing

Since Nov 8Pushed 6y agoCompare

[ Source](https://github.com/king19800105/structure)[ Packagist](https://packagist.org/packages/anthony/structure)[ RSS](/packages/anthony-structure/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (1)Used By (0)

laravel框架开发项目架构扩展包
------------------

[](#laravel框架开发项目架构扩展包)

特别注意
----

[](#特别注意)

- 该扩展包是[yb19890724/phpno1-architecture](https://github.com/yb19890724/phpno1-architecture)的特别版本，根据自身业务的定制开发版。
- 只支持单字段排序
- 切断了sql连贯操作后，和另一个操作的上下文联系
- 提供了boot方法的执行，可以把公共的操作方到boot中操作
- 新增了pushCriteria和popCriteria操作，结合boot方法，更灵活的设置了公共标准
- 增加了事务操作的封装

官方扩展qq群
-------

[](#官方扩展qq群)

```
qq:680531281

```

功能
--

[](#功能)

项目架构分层，代码生成器，快速进入开发阶段，拆分职责降低耦合。

目录
--

[](#目录)

- [安装](#安装)
    - [使用要求](#使用要求)
    - [composer](#composer)
    - [laravel](#laravel)
- [配置](#配置)
- [命令](#命令)
- [使用](#使用)
    - [快速使用](#快速使用)
    - [方法介绍](#方法介绍)
    - [初始化加载](#初始化加载)
    - [限制条件](#限制条件)
    - [排序字段](#排序字段)
    - [过滤条件](#过滤条件)
    - [scope](#scope)
    - [自定义](#自定义)
- [缓存](#缓存)
- [注意事项](#注意事项)

安装
--

[](#安装)

### 使用要求

[](#使用要求)

- laravel &gt;= 5.5
- php &gt;= 7.1

### composer

[](#composer)

执行以下命令获取包的最新版本:

```
    composer require anthony/structure
```

### laravel

[](#laravel)

#### 创建并注册到服务容器

[](#创建并注册到服务容器)

- 执行：php artisan anthony:provider
- 说明：用命令生成仓储文件时(anthony:entity || anthony:repository)，会自动生成ArchitectureServiceProvider文件。

```
    # 在config/app.php中
    'providers' => [
        // ......
        App\Providers\StructureServiceProvider::class
    ];
```

#### 生成配置文件

[](#生成配置文件)

```
    php artisan vendor:publish --provider "Anthony\Structure\Providers\StructureServiceProvider"
```

配置
--

[](#配置)

```
    //architecture.php
    'pagination' => [//默认分页数量
        'limit' => 20
    ],

    'cache'      => [//缓存时间
        'enabled'    => true,
        'minutes'    => 10,
    ],

    'order' => [//排序字段
        'o',
    ],

    'generator'  => [//代码生成器命名空间
        'root_namespace' => 'App\\',
        'namespace' => [
            'controller'          => 'Backend',
            'repository_eloquent' => 'Repository\\Eloquent',
            'repository'          => 'Repository\\Contracts',
            'criteria'            => 'Architecture\\Criterias',
            'provider'            => 'Providers\\ArchitectureServiceProvider',
            'service'             => 'Services',
            'model'               => 'Models',
            'response'            => 'Http\\Responses',
            'filter'              => 'Repository\\Filters'
        ]
    ]
```

命令
--

[](#命令)

说明：使用命令创建仓储文件时(anthony:entity和anthony:repository)，会自动绑定接口与实现类关系。

### 生成组合配置

[](#生成组合配置)

```
    //@params   {name}        生成文件名称
    //@params   {--resource}  生成资源方法(参照laravel控制器 资源控制器)
    php artisan anthony:entity {name} {--resource}
```

### 生成控制器

[](#生成控制器)

```
    //@params  {name}          控制器名称
    //@params  {--resource}    生成资源方法(参照laravel控制器 资源控制器)
    php artisan anthony:controller {name} {--resource}
```

### 生成业务处理类

[](#生成业务处理类)

```
    @params    {name}          文件名称
    @params    {--resource}    生成资源方法
    php artisan anthony:service {name} {--resource}
```

### 生成扩展全局限制类

[](#生成扩展全局限制类)

```
    @params    {name}          限制类名称
    php artisan anthony:criteria {name}
```

### 生成过滤类

[](#生成过滤类)

```
    @params    {name}          过滤类名称
    @params    {--prefix=}     命名空间
    @params    {--sort}        排序方法
    php artisan anthony:filter {name} {--prefix=} {--sort}
```

### 生成模型类

[](#生成模型类)

```
    @params    {name}          模型名称
    php artisan anthony:model {name}
```

### 生成服务器提供者,用于接口绑定实体类

[](#生成服务器提供者用于接口绑定实体类)

```
    php artisan anthony:provider
```

### 生成仓库类

[](#生成仓库类)

```
    @params    {name}          仓库名称
    php artisan anthony:repository {name}
```

### 生成校验类

[](#生成校验类)

```
    @params    {name}          文件名称
    @params    {--dir=}        生成目录
    php artisan anthony:validation {name} {--dir=}
```

### 生成响应类

[](#生成响应类)

```
    @params    {name}          文件名称
    @params    {--dir=}        生成目录
    php artisan anthony:response {name} {--dir=}
```

### 生成种子文件

[](#生成种子文件)

```
    @params    {name}          文件名称
    php artisan anthony:seeder {name}
```

快速使用
----

[](#快速使用)

### 1.执行以下命令:

[](#1执行以下命令)

```
    php artisan anthony:entity User --resource
```

生成文件 (注:以下命令生成文件路径可以通过配置修改architecture.php)

- app\\Http\\Controllers\\Backend\\UserController
- app\\Services\\UserService
- app\\Repository\\Eloquent\\UserRepositoryEloquent
- app\\Repository\\Contracts\\UserRepository
- app\\Http\\Requests\\User\\StoreRequest \\UpdateRequest
- app\\Http\\Responses\\User\\IndexResponse \\ShowResponse
- app\\Models\\UserModel
- database\\factories\\UserFactory
- database\\migrations\\UserTable
- database\\seeds\\UserSeeder

### 2.修改代码

[](#2修改代码)

#### 1).控制器

[](#1控制器)

```
