[開源] LaravelPlus - 基於 Laravel 魔改,爲方便實際業務使用 - 開發中

目的

爲了減小重複 CURD 和新項目的配置麻煩等問題,(就是爲了騙星星LaravelPlus )
如:php

  • 現有的 infyomlabs/laravel-generator CODE 生成工具雖然好用,可是不太喜歡樣式和代碼結構。
  • 有些本地,測試,線上的配置須要頻繁改動的須要。
  • 多個項目構建引入包,配置擴展等重複性操做

介紹

LaravelPlus 基於 Laravel 增長部分軟件包初始安裝和進行業務使用功能改動,來建立一個開箱即用的應用前端

版本基礎

當前版本基於react

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

#### 複製項目nginx

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

  1. 兼容 laravel-plus 目錄名


功能使用說明

建立 framework 分層腳本和資源映射:想法來源

framework 腳本建立內容:git

  • Controller, Service, Repository 等文件和對應關聯關係
  • Route 資源路由增長
  • Controller 中資源類型代碼和模型數據處理(開發中)

直接使用本項目內容(推薦)github

$ 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 插件軟件包(更新進度略慢本項目)redis

$ composer require php-tool/laravel-plus-make
熱切換配置使用(config/dynamic/)

在 .env 中設置 ENABLE_HOT_SWITCHING=true 後,會在 AppServiceProvider 進行 dynamic 映射(對性能有必定影響,慎用)數據庫

使用方式:npm

<?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)
  • 增長默認加載軟件包

    • 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 開發環境

  • 增長前端資源

    • element-ui 樣式框架(可選方案 iview)
  • 增長默認圖片存儲目錄(storage/app/public/images)
  • 擴展結構分層 想法來源

    • 系統分層

      - Controllers 控制器層
    • 主要分層

      - Services 業務服務層
      - Repositories Repository 數據倉庫層
      - Models 模型層(無需建立,默認經過模型工具建立)
    • 擴展分層

      - Presenters 固定業務主持中控層
      - Transformers 轉化層/篩選層(篩選後在選擇輸出)
      - Formatters 格式化層(對於輸出數據進行格式化,服務於 view 層),便於前端模版渲染與展現
  • 增長 Redis 多語言配置讀取

待辦

完善資源功能:Controller 中模型數據處理和數據返回

增長 Redis 多語言數據庫,和遷移

增長動態視圖模式和靜態視圖模式(渲染後生成 view)切換

完善 wiki

相關文章
相關標籤/搜索