English | 中文
LaravelPlus 基于 Laravel 增加部分软件包初始安装和进行业务使用功能改动,来创建一个开箱即用的应用.
拓展功能
- 自动 Laravel 与 Vue/Element UI 基于基础模型的代码生成器。
- 多进程使用
- 环境配置切换
为了减少重复 CURD 和新项目的配置麻烦等问题,如:
- 现有的 infyomlabs/laravel-generator CODE 生成工具虽然好用,但是不太喜欢样式和代码结构。
- 有些本地,测试,线上的配置需要频繁改动的需要。
- 多个项目构建引入包,配置扩展等重复性操作
- 基于 ReactPHP 多进程使用
- Where 条件语句自动生成
当前版本基于
| PHP | Laravel | 
|---|---|
| >=7.2 | >=6.0 | 
具体 Wiki (待完善)
- 已安装 PHP
- 脚本运行前置要求(任意一种)
// A. github (推荐)
$ git clone https://github.com/ElapseAnnals/LaravelPlus.git   
$ git checkout 5.8.0 // 切换至当前最新稳定版本或
// B. composer
$ composer create-project elapse-annals/laravel-plus
$ mv laravel-plus  LaravelPlus//  A.在当前目录运行自动复制脚本 ( 推荐)
$ php LaravelPlus/create YourProject或
//  B.在当前目录手动复制项目至自身项目
$ cd LaravelPlus
$ rm composer.lock
$ rsync -av --exclude  . --exclude  .. --exclude  .git/ --exclude  vendor/ --exclude  .github/ LaravelPlus/* YourProject             
					//  为消除对称  */         
$ cd YourProject
$ rm composer.lock .env .travis
$ cp .env.example .env   
$ cd YourProject //  进入 YourProject 项目中
$ composer install   // 安装依赖软件包 (请先已安装 composer )
$ php artisan key:generate    // 更新 key
$ php artisan vendor:publish // 发布扩展包的资源
$ php artisan migrate  // 迁移数据库
// 以下非必须
$ php artisan storage:link // 图片资源软连接映射
$ php artisan clear-compiled // 清理编译
$ php artisan ide-helper:generate // 生成 ide 辅助提示
$ php artisan vendor:publish --provider="Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider" --tag=config // 加入配置
$ php artisan ide-helper:meta  // 生成 PHPStorm 辅助提示(重启 PHPStorm)
$ php artisan ide-helper:models //  生成模型辅助提示Tips:
- 
兼容 laravel-plus 目录名 
aliyun
$ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/cnpkg
 $ composer config -g repos.packagist composer https://php.cnpkg.org- Composer 加速工具 prestissimo 引入
$ composer global require hirak/prestissimophp LaravelPlus/update YourProject创建分层脚本和资源映射:想法来源
framework 脚本创建内容:
- Controller, Service, Repository 等文件和对应关联关系
- Route 资源路由增加
- Controller 中资源类型代码和模型数据处理(开发中)
直接使用本项目内容(推荐)
 $ php artisan make:framework Test  // 创建分层结构(推荐)
 $ php artisan make:framework Test --basis  // 创建系统分层和主要分层结构(Controller, Service, Repository)
 $ php artisan make:framework Test --D // 删除分层结构 
或引入 php-tool/laravel-plus-make Laravel Plus Make 插件软件包(更新进度慢)
$ composer require php-tool/laravel-plus-makeTips:
- 注意文件被其它服务占用问题,可进行重启尝试 (Failed to clear cache. Make sure you have the appropriate permissions.)
- 使用导出需要在 web.php 中 export 注册路由
在 .env 中设置 ENABLE_HOT_SWITCHING=true 后,会在 AppServiceProvider 进行 dynamic 映射(对性能有一定影响,慎用)
使用方式:
<?php
$env = config('dynamic.env');dynamic 目录文件说明
- production 生产环境 (必须配置)
- develop 开发环境 (必须配置,以下配置继承 develop 配置)
- test 测试环境
- local 本地环境
- simulation 仿真环境
 
Tips:
- .env 配置 DYNAMIC_IS_STRICT 控制热配是否严格模式(默认 false 关闭)
- 严格模式下不会继承 production/develop,完全采用当前环境配置
 
- 默认在继承基础上有重复属性,会覆盖继承项
- 继承基础特有属性会被携带至当前配置
- config/dynamic.php 为 IDEA 提示文件,使用空 key 即可
优化默认路由中闭包
- 路由中禁止使用闭包,如有需要请在 ClosureController 中注册
- php artisan optimize:clear     // (慎用)
- php artisan view:clear
- php artisan cache:clear // 应用程序缓存清理(慎用- 会清理 config.cache 中启用缓存(file/db/redis 等))
- php artisan route:cache
- php artisan config:clear
- php artisan clear-compiled // 清理编译 php artisan debug:clear
 
php artisan serve设置数据工厂填充中文配置
use Faker\Factory as Factory;
$  $faker = Factory::create('zh_CN');通过 MainProcess 控制 ChildProcess 进程(仅能在 CLI 模式下运行)
定时执行在 Console/Kernel.php 中 schedule 配置
运行流程
MainProcess(主进程调度) => MainProcessController(主进程执行任务,拆分子进程) => 
ChildProcess(子进程调度) => ChildProcessController (子进程任务) =>
  MainProcessController(接收子进程) => MainProcess(主进程结束)业务任务名
$this->business_name
主进程业务逻辑和数据请求
(new \App\Http\Controllers\{$this->business_name}Action())->getData();
(new \App\Http\Controllers\{$this->business_name}Action())->run();子进程运行业务逻辑
(new \App\Http\Controllers\{$this->business_name}ProcessAction()->run();phpunit
dusk 浏览器测试
composer require laravel/dusk --dev
php artisan dusk:install  // 需要翻墙chromedriver 镜像 下载对应 Chrome 版本资源 手动重命名移动至 LaravelPlus/vendor/laravel/dusk/bin/chromedriver-mac
- php artisan optimize // 类映射加载优化(该命令会自动缓存 config/route)
- php artisan config:cache // 配置缓存
- php artisan route:cache // 路由
 
- php artisan view:cache // 视图缓存
- composer dump-autoload --optimize //
- 开启 OpCache
$ sudo vim /etc/php/7.2/fpm/php.ini // set opcache.enable=1 // ... $ sudo service php5.6-fpm restart $ sudo service nginx restart 
npm run dev    // 本地开发,开启 debug 模式
npm run prod    // 线上部署(进行压缩资源)
npm run watch   // 监视编译(开发时启用)使用 mixin 注入 vue 组件
<script>
    var js_data = @json($js_data);
    var mixin = {
        data: {
        },
        methods: {
        }
    }
</script>
<script type="text/javascript" src="{{asset('js/app.js')}}"></script>web 经过权限,csrf 等中间件和 Session api token 维护使用 auth:api 中间件或 barryvdh/laravel-cors 若非单纯 api ,建议使用 web
- 
设置日志打印默认按天执行(.env::LOG_CHANNEL) 
- 
增加默认加载软件包 - 
production 生产环境 - 
overtrue/laravel-lang 多语言本地化 i18n 
- 
maatwebsite/excel 增加 excel 组件 
 
- 
- 
develop 开发环境 - reliese/laravel 模型生成工具 / phptool/laravel
 php artisan code:models --table=tb_name // 指定表 php artisan code:models --connection=mysql // 指定数据库连接 php artisan code:models --connection=mysql --table=tb_name // 指定连接和指定表 - barryvdh/laravel-debugbar debuger 工具
- barryvdh/laravel-ide-helper   ide 辅助工具
 php artisan ide-helper:generate
- overtrue/laravel-query-logger 日志工具
- nunomaduro/phpinsights 统计检测项目问题(类似 PHPCS,需求版本 php 7.2.* ,请手动安装 composer require nunomaduro/phpinsights --dev)
 
- 
推荐软件包列表 - 
[laravel/socialite] () 社会化登陆包【注意配置代理或更改底层路由请求】 - 替代方案 overtrue/socialite 包含国内社会化登陆 
- 
rap2hpoutre/laravel-log-viewer 日志展示 [访问 host/logs] 
- 
react/react ReactPHP 多进程异步扩展(手动,引入后 Process 才可使用) - react/child-process - react/event-loop - 引入 ElasticSearch For scout - laravel/scout (手动) - tamayo/laravel-scout-elastic(手动) 
 - [elastic/elasticsearch-php](https://github.com/elastic/elasticsearch-php) 原生 ElasticSearch (手动) - rabbitMQ 扩展 - vladimir-yuldashev/laravel-queue-rabbitmq - php-amqplib/php-amqplib 原生(手动) - [predis/predis](https://github.com/nrk/predis) Redis 插件(建议使用 php-redis 扩展) - [php-tool/laravel-plus-make](https://github.com/PHPTool/LaravelPlusMake) Laravel Plus Make 自动生成 framework 代码插件软件包(手动) - [infyomlabs/laravel-generator](https://github.com/InfyOmLabs/laravel-generator) Code 代码生成工具(可选)- 
darkaonline/l5-swagger swagger 文档生成 
- 
mpociot/laravel-apidoc-generator api doc 文档生成 
- 
nunomaduro/larastan 增加 laravel 静态检测工具 
- 
guzzlehttp/guzzle Http 请求包 
- 
ClassPreloader/ClassPreloader vendor preload 生成器 
 
- 
 
- 
- 
增加前端资源 - element-ui 样式框架(可选方案 iview)
 
- 
增加默认图片存储目录(storage/app/public/images) 
- 
扩展结构分层 想法来源 - 系统分层
- Controllers 控制器层
 
- 主要分层
- Services 业务服务层(处理业务逻辑)
- Repositories Repository 数据仓库层(处理数据库逻辑)
- Models 模型层(无需创建,默认通过模型工具创建)
 
- 扩展分层
- Presenters 固定业务主持中控层(处理视图的逻辑:参考,更适用于 blade)
- 减少在 blade 用 @if...@else...@endif
 
- Transformers 转化层/筛选层(筛选后在选择输出)
- Formatters 格式化层(对于输出数据进行格式化,服务于 view 层),便于前端模版展示
 
- Presenters 固定业务主持中控层(处理视图的逻辑:参考,更适用于 blade)
 
- 系统分层
- 
增加 redis 多语言配置读取 
- 
设置默认 Schema index 长度 使用 Schema 注意 MySQL 版本低于 5.7.7 需设置默认 index 长度小于 191 Schema::defaultStringLength(191); 
- 开发 SwiftCMS 实际应用以进行完善
