资讯专栏INFORMATION COLUMN

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

weknow619 / 2047人阅读

摘要:目的为了减少重复和新项目的配置麻烦等问题,就是为了骗星星如现有的生成工具虽然好用,但是不太喜欢样式和代码结构。有些本地,测试,线上的配置需要频繁改动的需要。

目的

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

现有的 infyomlabs/laravel-generator CODE 生成工具虽然好用,但是不太喜欢样式和代码结构。

有些本地,测试,线上的配置需要频繁改动的需要。

多个项目构建引入包,配置扩展等重复性操作

介绍

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

版本基础

当前版本基于

PHP Laravel(影响不大,降低版本理论可以)
>=7.1.3 >=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:

兼容 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 映射(对性能有一定影响,慎用)

使用方式:


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

增加默认加载软件包

production 生产环境

- [respect/validation](https://github.com/Respect/Validation) 验证包
- [react/react](https://github.com/reactphp/react) ReactPHP 多进程异步扩展(可以移除)
- 引入 ElasticSearch For scout
    - [laravel/scout](https://github.com/laravel/scout) 
    - [tamayo/laravel-scout-elastic](https://github.com/ErickTamayo/laravel-scout-elastic)
     - [elastic/elasticsearch-php](https://github.com/elastic/elasticsearch-php) 原生 ElasticSearch (可选)
- rabbitMQ 扩展
    - vladimir-yuldashev/laravel-queue-rabbitmq          - php-amqplib/php-amqplib 原生(可选)
- [rap2hpoutre/laravel-log-viewer](https://github.com/rap2hpoutre/laravel-log-viewer) 日志展示 [访问 host/logs] 
- [predis/predis](https://github.com/nrk/predis) Redis 插件(建议使用 php-redis 扩展)
- [php-tool/laravel-plus-make](https://github.com/PHPTool/LaravelPlusMake) Laravel Plus Make 自动生成 framework 代码插件软件包(可多带带引用)
- [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) Http 请求包
- [overtrue/laravel-lang](https://github.com/overtrue/laravel-lang) 多语言本地化 i18n

develop 开发环境

reliese/laravel 模型生成工具

  $ php artisan code:models --table=tb_name

[doctrine/dbal]

barryvdh/laravel-debugbar debuger 工具

barryvdh/laravel-ide-helper ide 辅助工具

$ artisan ide-helper:generate

overtrue/laravel-query-logger 日志工具

nunomaduro/phpinsights 统计检测项目问题(类似 PHPCS,需求版本 php 7.2.* ,请手动安装 composer require nunomaduro/phpinsights --dev)

infyomlabs/laravel-generator Code 代码生成工具(可选)

增加前端资源

element-ui 样式框架(可选方案 iview)

增加默认图片存储目录(storage/app/public/images)

扩展结构分层 想法来源

系统分层

- Controllers 控制器层

主要分层

- Services 业务服务层
- Repositories Repository 数据仓库层
- Models 模型层(无需创建,默认通过模型工具创建)

扩展分层

- Presenters 固定业务主持中控层
- Transformers 转化层/筛选层(筛选后在选择输出)
- Formatters 格式化层(对于输出数据进行格式化,服务于 view 层),便于前端模版渲染与展示

增加 Redis 多语言配置读取

待办

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

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

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

完善 wiki

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31674.html

相关文章

  • ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1【社交系统

    摘要:年,由北京的团队开发了涉足社交开源行业。终于,在年下半年,我们决定重写这个程序,抛弃之前的每一行代码。起初,我们选择在中做生成函数,配合第三方包实现,功能实现了。的拓展不能直接以这种方式使用哟,因为我们做这个的想法是把配置移交到后台配置。 什么是 ThinkSNS+ 好吧,这不是广告。。。在 09 年,由北京的团队开发了 ThinkSNS 涉足社交开源行业。09 年,由北京的团队开发了...

    testbird 评论0 收藏0
  • PHP相关

    摘要:的机器学习库的机器学习库,包括算法交叉验证神经网络等内容。在即将到来的大会上,她将和大家分享在机器学习领域的全新可能。入门总结入门相关,如安装配置基本使用等。 基于 Swoole 开发 PHP 扩展 Swoole-1.9.7 增加了一个新特性,可以基于 Swoole 使用 C++ 语言开发扩展模块,在扩展模块中可以注册 PHP 内置函数和类。现在可以基于 Swoole 来编写 PHP ...

    lewinlee 评论0 收藏0
  • 如何在 Laravel “规范” 的开发验证码发送功能【社交系统ThinkSNS研发日记十一】

    摘要:需求场景发送验证码或者消息通知,可发送到手机或邮箱中。完成首先,在中的规范就是使用的消息通知,这里基于场景为验证码。所以我们在验证码模型中添加是完全符合通知的正确使用的。 顺便发个小通知:7月15日ThinkSNS+开源版发布,同时非开源的APP也走出内测阶段,体验二维码也全面发布体验。 什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小...

    Flands 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<