[开源] 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 ...
随机推荐
- Java线程之创建线程
翻译自:https://www.journaldev.com/1016/java-thread-example 进程 进程是一个自包含的执行环境,它可以被看成一个程序或应用程序.然而一个应用程序本身包 ...
- 巨丑vue
<template> <div> <div class="demo-type" align="right" style=" ...
- Linux dd烧写系统
虽然用dd指令烧写系统很简单,但是久而久之忘得也太快了,赶紧整理一下. .img 系统镜像 .iso U盘启动引导文件 1. 先来查看本机磁盘情况,打开Linux终端界面(快捷键Ctrl + Alt ...
- git-本机内容git至github
1.修改仓库的名字 github中右上角/settings/Account: 修改后显示的变化: 2.本地和github账号创建联系 (base) localhost:~ ligaijiang$ ss ...
- POJ2513:Colored Sticks(字典树+欧拉路径+并查集)
http://poj.org/problem?id=2513 Description You are given a bunch of wooden sticks. Each endpoint of ...
- AnimationUtil
import android.view.View; import android.view.animation.AlphaAnimation; public class AnimationUtil { ...
- Fragment入门代码
让一个activity和加载多个布局文件 package com.example.fragment; import android.app.Activity; import android.app.F ...
- 将ejs模板文件的后缀换成html
1.app.js的头部定义ejs: var ejs = require('ejs'): 2注册html模板引擎: app.engine('html',ejs.__express); 3.将模板引擎换成 ...
- HashMap 怎么 hash?又如何 map?
HashMap 是 Java 中 Map 的一个实现类,它是一个双列结构(数据+链表),这样的结构使得它的查询和插入效率都很高.HashMap 允许 null 键和值,它的键唯一,元素的存储无序,并且 ...
- java使用nio(Paths,Files)遍历文件目录,转成java.io.File
String directory = "C:\\Users\\Administrator\\AppData\\Local\\Temp\\8ad088a2-0bb3-41dc-89d9-2c5 ...