V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ben1024
V2EX  ›  PHP

[开源骗星] LaravelPlus - 基于 Laravel 魔改,为方便实际业务使用 - 开发中

  •  
  •   ben1024 · 2019-06-09 23:19:25 +08:00 · 3236 次点击
    这是一个创建于 1997 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目的

    为了减少重复 CURD 和新项目的配置麻烦等问题,(就是为了骗星星LaravelPlus ) 如:

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

    介绍

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

    版本基础

    当前稳定版本:

    当前版本基于

    | PHP >=7.1.3 | Laravel >=5.8 |

    项目使用说明

    下载项目

    // 1. github (推荐)
    $ git clone https://github.com/ElapseAnnals/LaravelPlus.git  
    $ git checkout v5.8.0 // 切换至当前最新稳定版本
    
    // 或
    
    // 2. composer
    $ composer create-project elapse-annals/laravel-plus
    $ mv laravel-plus  LaravelPlus
    

    复制项目

    //  1.在当前目录运行自动复制脚本 (推荐)
    $ php LaravelPlus/create YourProject
    
    // 或
     
    //  2.在当前目录手动复制项目至自身项目
    $ 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 // 图片资源软连接映射 [非必须] 
    

    Tips:

    1. 兼容 laravel-plus 目录名

    功能使用说明

    创建 framework 分层脚本和资源映射:想法来源

    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
    
    热切换配置使用( 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 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   // 监视编译(开发时建议启用)
    

    改动内容

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

    • 增加默认加载软件包

    • 增加前端资源

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

    • 扩展结构分层 想法来源

      • 系统分层
        • Controllers 控制器层
      • 主要分层
        • Services 业务服务层
        • Repositories Repository 数据仓库层
        • Models 模型层(无需创建,默认通过模型工具创建)
      • 扩展分层
        • Presenters 固定业务主持中控层
        • Transformers 转化层 /筛选层(筛选后在选择输出)
        • Formatters 格式化层(对于输出数据进行格式化,服务于 view 层),便于前端模版渲染与展示
    • 增加 Redis 多语言配置读取

    待办

    完善资源功能:Controller 中模型数据处理和数据返回

    增加 Redis 多语言数据库,和迁移

    增加动态视图模式和静态视图模式(渲染后生成 view )切换

    完善 wiki

    4 条回复    2019-06-10 14:27:04 +08:00
    KasuganoSoras
        1
    KasuganoSoras  
       2019-06-10 01:48:46 +08:00
    已 Star,也许以后用的到
    sanqian
        2
    sanqian  
       2019-06-10 09:23:02 +08:00
    已 Star,也许以后用的到
    zxcslove
        3
    zxcslove  
       2019-06-10 13:57:40 +08:00
    切,不就是星么,拿去
    ben1024
        4
    ben1024  
    OP
       2019-06-10 14:27:04 +08:00
    @zxcslove
    贫者不食嗟来之食。。。
    真香 [狗头]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5184 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:40 · PVG 17:40 · LAX 01:40 · JFK 04:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.