Skip to content

hyper-tool/excel-plus

Folders and files

NameName
Last commit message
Last commit date
Feb 14, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Mar 31, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020
Feb 11, 2020

English | 中文

Plus

php-badge laravel-badge Build Status License composer.lock

介绍

LaravelPlus 基于 Laravel 增加部分软件包初始安装和进行业务使用功能改动,来创建一个开箱即用的应用.

拓展功能

  • 自动 Laravel 与 Vue/Element UI 基于基础模型的代码生成器。
  • 多进程使用
  • 环境配置切换

目的

为了减少重复 CURD 和新项目的配置麻烦等问题,如:

  • 现有的 infyomlabs/laravel-generator CODE 生成工具虽然好用,但是不太喜欢样式和代码结构。
  • 有些本地,测试,线上的配置需要频繁改动的需要。
  • 多个项目构建引入包,配置扩展等重复性操作
  • 基于 ReactPHP 多进程使用
  • Where 条件语句自动生成

版本基础

当前稳定版本:

当前版本基于

PHP Laravel
>=7.2 >=6.0

文档

具体 Wiki (待完善)

运行环境要求

  • 已安装 PHP
  • 脚本运行前置要求(任意一种)
    • homestead 中(推荐)
    • *unix 环境
    • Windows 下安装 cmder - 下载地址
    • cmd 运行未进行兼容(现有异常会不过滤和清理部分文件) (不推荐)

项目使用

1.下载项目

// 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

2.创建新项目

//  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   

3.新项目初始化

$ 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:

  1. 兼容 laravel-plus 目录名

  2. Composer 镜像

aliyun

$ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

cnpkg

 $ composer config -g repos.packagist composer https://php.cnpkg.org
  1. Composer 加速工具 prestissimo 引入
$ composer global require hirak/prestissimo

4.更新项目

php 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-make

效果图: image

Tips:

  • 注意文件被其它服务占用问题,可进行重启尝试 (Failed to clear cache. Make sure you have the appropriate permissions.)
  • 使用导出需要在 web.php 中 export 注册路由
热切换配置使用(config/dynamic/)

在 .env 中设置 ENABLE_HOT_SWITCHING=true 后,会在 AppServiceProvider 进行 dynamic 映射(对性能有一定影响,慎用)

使用方式:

<?php
$env = config('dynamic.env');

dynamic 目录文件说明

  • production 生产环境 (必须配置)
  • develop 开发环境 (必须配置,以下配置继承 develop 配置)
    • test 测试环境
    • local 本地环境
    • simulation 仿真环境

Tips:

  1. .env 配置 DYNAMIC_IS_STRICT 控制热配是否严格模式(默认 false 关闭)
    • 严格模式下不会继承 production/develop,完全采用当前环境配置
  2. 默认在继承基础上有重复属性,会覆盖继承项
  3. 继承基础特有属性会被携带至当前配置
  4. 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();

测试驱动开发(TDD)

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/api 使用区别和场景

web 经过权限,csrf 等中间件和 Session api token 维护使用 auth:api 中间件或 barryvdh/laravel-cors 若非单纯 api ,建议使用 web


  • 设置日志打印默认按天执行(.env::LOG_CHANNEL)

  • 增加默认加载软件包

    • production 生产环境

    • develop 开发环境

        php artisan code:models --table=tb_name   // 指定表 
        php artisan code:models --connection=mysql  // 指定数据库连接
        php artisan code:models --connection=mysql --table=tb_name   // 指定连接和指定表
    • 推荐软件包列表

      - [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 代码生成工具(可选)
      
  • 增加前端资源

    • element-ui 样式框架(可选方案 iview)
  • 增加默认图片存储目录(storage/app/public/images)

  • 扩展结构分层 想法来源

    • 系统分层
      • Controllers 控制器层
    • 主要分层
      • Services 业务服务层(处理业务逻辑)
      • Repositories Repository 数据仓库层(处理数据库逻辑)
      • Models 模型层(无需创建,默认通过模型工具创建)
    • 扩展分层
      • Presenters 固定业务主持中控层(处理视图的逻辑:参考,更适用于 blade)
        • 减少在 blade 用 @if...@else...@endif
      • Transformers 转化层/筛选层(筛选后在选择输出)
      • Formatters 格式化层(对于输出数据进行格式化,服务于 view 层),便于前端模版展示
  • 增加 redis 多语言配置读取

  • 设置默认 Schema index 长度

    使用 Schema 注意 MySQL 版本低于 5.7.7 需设置默认 index 长度小于 191

    Schema::defaultStringLength(191);

进展

  • 开发 SwiftCMS 实际应用以进行完善

待办列表

Projects