[开源] LaravelPlus - 基于 Laravel 魔改,为方便实际业务使用 - 开发中
目的
为了减少重复 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 映射(对性能有一定影响,慎用)
使用方式:
<?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 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 验证包
- react/react ReactPHP 多进程异步扩展(可以移除)
- 引入 ElasticSearch For scout
- laravel/scout
- tamayo/laravel-scout-elastic
- elastic/elasticsearch-php 原生 ElasticSearch (可选)
- rabbitMQ 扩展
- vladimir-yuldashev/laravel-queue-rabbitmq - php-amqplib/php-amqplib 原生(可选)
- rap2hpoutre/laravel-log-viewer 日志展示 [访问 host/logs]
- predis/predis Redis 插件(建议使用 php-redis 扩展)
- php-tool/laravel-plus-make Laravel Plus Make 自动生成 framework 代码插件软件包(可单独引用)
- guzzlehttp/guzzle Http 请求包
- 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 代码生成工具(可选)
- reliese/laravel 模型生成工具
- production 生产环境
增加前端资源
- element-ui 样式框架(可选方案 iview)
增加默认图片存储目录(storage/app/public/images)
- 扩展结构分层 想法来源
- 系统分层
- Controllers 控制器层
- 主要分层
- Services 业务服务层
- Repositories Repository 数据仓库层
- Models 模型层(无需创建,默认通过模型工具创建)
- 扩展分层
- Presenters 固定业务主持中控层
- Transformers 转化层 / 筛选层(筛选后在选择输出)
- Formatters 格式化层(对于输出数据进行格式化,服务于 view 层),便于前端模版渲染与展示
- 系统分层
- 增加 Redis 多语言配置读取
待办
完善资源功能:Controller 中模型数据处理和数据返回
增加 Redis 多语言数据库,和迁移
增加动态视图模式和静态视图模式(渲染后生成 view)切换
完善 wiki
[开源] LaravelPlus - 基于 Laravel 魔改,为方便实际业务使用 - 开发中的更多相关文章
- ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1
什么是 ThinkSNS+ 09 年,由北京的团队开发了 ThinkSNS 涉足社交开源行业.这么多年累计不少客户.2014-2016,两年都在维护和开发之前基于 TP 的 ThinkSNS , 慢慢 ...
- 魔改了一下bootstrap-treeview组件,发布个NPM包体验一下
前言 之前在这篇文章 基于.NetCore开发博客项目 StarBlog - (8) 分类层级结构展示 中说到,我为了让文章分类列表支持层级结构,用了一个树形组件,不过这个组件太老了,使用的Boots ...
- 魔改——MDI多视图模板Tab/标签页 初始化/操作控件
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- 魔改——MFC SDI程序 转换为 MDI程序
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- 魔改——MFC MDI程序 定制 文档模板 运行时全部打开 禁用关闭按钮
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- 基于 Laravel、Vue.js开发的全新社交系统----ThinkSNS+
什么是ThinkSNS+ ThinkSNS(简称TS)始于2008年,一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+.新的产品名 ...
- 【社交系统ThinkSNS+研发日记三】基于 Laravel Route 的 ThinkSNS+ Component
[社交系统ThinkSNS+研发日记系列] 一.<ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1> 二.<基于 Laravel 开发 Th ...
- 基于 Laravel 开发 ThinkSNS+ 中前端的抉择(webpack/Vue)踩坑日记【ThinkSNS+研发日记系列】
在上一篇文章< ThinkSNS+基于Laravel master分支,从1到 0,再到0.1>,简单的介绍了 社群系统ThinkSNS+ ,这里分享在开发过程中,前端选择的心理活动. L ...
- 基于 Laravel Route 的 ThinkSNS+ Component
这里是传送门: <ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1[ThinkSNS+研发日记系列一]> <基于 Laravel 开发 Th ...
随机推荐
- 用python实现的简易记牌器的demo
实现功能很简单: 初始时 1到10 以及 jkq各 4张,大小王 共两张 只要输入相应的牌号:1到10,例如 >>1 J.K.Q :例如>>j >> ...
- [Linux命令]curl命令参数详解——转载
linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态.curl命令参数介 ...
- Linux下MongoDB非正常关闭启动异常解决方法
1.将配置信息写入一个文件中 vim mongo.conf 里面写如下内容: dbpath=/usr/local/mongodb/data/ logpath=/usr/local/mongodb/lo ...
- MongoDB系列一:MongoDB文档型数据库特点介绍
一.MongoDB数据库的存储特点: 1.MongoDB是文档型数据库,存储的是文档(将json二进制化为Bson存储): 2.存储的每篇文档都可以有自己独特的存储结构,颠覆了传统数据库必须按照表和列 ...
- IPv4 地址分类-for what
怎么分的:IPV4 地址分类 A B C D E 分来做什么:IP地址为什要分类?就是a类,b类,c类...? - wuxinliulei的回答 - 知乎
- python获得坐标系信息
# -*- coding: cp936 -*- ############################################################# import arcpy i ...
- Android四层体系架构
Application应用层 应用是用Java语言编写的运行在虚拟机上的程序,即图中最上层的蓝色部分.手机的上层应用其实,Google最开始时就在Android系统中捆绑了一些核心应用比如e-mail ...
- display:flex 布局详解(2)
1. flex设置元素垂直居中对齐 在之前的一篇文章中记载过如何垂直居中对齐,方法有很多,但是在学习了flex布局之后,垂直居中更加容易实现 HTML代码: <div class=" ...
- 微信小程序:undefined Expecting 'STRING', got INVALID
出现问题: 问题原因:app.json中不能出现注释
- 分布式存储ceph介绍(1)
一.Ceph简介: Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统.ceph 的统一体现在可以提供文件系统.块存储和对象存储,分布式体现在可以动态扩展.在国内一些公司的云环 ...