CRMEB PRO
運(yùn)行環(huán)境要求PHP7.1 ~ 7.3。
開(kāi)發(fā)規(guī)范
命名規(guī)范
ThinkPHP6.0遵循PSR-2命名規(guī)范和PSR-4自動(dòng)加載規(guī)范来涨,并且注意如下規(guī)范:
- 目錄和文件
- 目錄使用小寫(xiě)+下劃線;
- 類(lèi)庫(kù)启盛、函數(shù)文件統(tǒng)一以.php為后綴;
- 類(lèi)的文件名均以命名空間定義技羔,并且命名空間的路徑和類(lèi)庫(kù)文件所在路徑一致僵闯;
- 類(lèi)(包含接口和Trait)文件采用駝峰法命名(首字母大寫(xiě)),其它文件采用小寫(xiě)+下劃線命名藤滥;
- 類(lèi)名(包括接口和Trait)和文件名保持一致鳖粟,統(tǒng)一采用駝峰法命名(首字母大寫(xiě));
函數(shù)和類(lèi)拙绊、屬性命名
- 類(lèi)的命名采用駝峰法(首字母大寫(xiě))向图,例如 User、UserType标沪;
- common函數(shù)的命名使用小寫(xiě)字母和下劃線(小寫(xiě)字母開(kāi)頭)的方式榄攀,例如 get_client_ip;
- 控制器里面的方法使用小寫(xiě)字母和下劃線(小寫(xiě)字母開(kāi)頭)的方式金句,例如 get_client_ip
- 方法的命名使用駝峰法(首字母小寫(xiě))檩赢,例如 getUserName;
- 屬性的命名使用駝峰法(首字母小寫(xiě))违寞,例如 tableName贞瞒、instance;
- 特例:以雙下劃線__打頭的函數(shù)或方法作為魔術(shù)方法趁曼,例如 __call 和 __autoload军浆;
常量和配置
- 常量以大寫(xiě)字母和下劃線命名,例如 APP_PATH挡闰;
- 配置參數(shù)以小寫(xiě)字母和下劃線命名乒融,例如 url_route_on 和url_convert;
- 環(huán)境變量定義使用大寫(xiě)字母和下劃線命名,例如APP_DEBUG簇抵;
數(shù)據(jù)表和字段
- 數(shù)據(jù)表和字段采用小寫(xiě)加下劃線方式命名庆杜,并注意字段名不要以下劃線開(kāi)頭,例如 think_user 表和 user_name字段碟摆,不建議使用駝峰和中文作為數(shù)據(jù)表及字段命名
注意:請(qǐng)理解并盡量遵循以上命名規(guī)范晃财,可以減少在開(kāi)發(fā)過(guò)程中出現(xiàn)不必要的錯(cuò)誤
語(yǔ)法規(guī)范
- 盡量使用php7新語(yǔ)法
- 每個(gè) namespace 命名空間聲明語(yǔ)句和 use 聲明語(yǔ)句塊后面,必須 插入一個(gè)空白行
- 類(lèi)的開(kāi)始花括號(hào)({) 必須 寫(xiě)在類(lèi)聲明后自成一行典蜕,結(jié)束花括號(hào)(})也 必須 寫(xiě)在類(lèi)主體后自成一行
- 方法的開(kāi)始花括號(hào)({) 必須 寫(xiě)在函數(shù)聲明后自成一行断盛,結(jié)束花括號(hào)(})也 必須 寫(xiě)在函數(shù)主體后自成一行。
- 類(lèi)的屬性和方法 必須 添加訪問(wèn)修飾符(private愉舔、protected 以及 public)钢猛,abstract 以及 final 必須 聲明在訪問(wèn)修飾符之前,而 static 必須 聲明在訪問(wèn)修飾符之后
- 控制結(jié)構(gòu)的關(guān)鍵字后 必須 要有一個(gè)空格符轩缤,而調(diào)用方法或函數(shù)時(shí)則 一定不可 有
- 控制結(jié)構(gòu)的開(kāi)始花括號(hào)({) 必須 寫(xiě)在聲明的同一行命迈,而結(jié)束花括號(hào)(}) 必須 寫(xiě)在主體后自成一行
- 純 PHP 代碼文件 必須 省略最后的 ?> 結(jié)束標(biāo)簽
- 所有方法,類(lèi)火的,控制器類(lèi)壶愤,都 必須 添加訪問(wèn)修飾符
/** * 中文注釋 * @param string $str 聲明類(lèi)型 * @param array $arr * @return bool */ public function action(string $str, array $arr) { return true; }
- 參數(shù)列表中,每個(gè)逗號(hào)后面 必須 要有一個(gè)空格馏鹤,而逗號(hào)前面 一定不可 有空格
function foo($arg1, &$arg2, $arg3 = []) { // method body }
- 參數(shù) 可以 分列成多行征椒,此時(shí)包括第一個(gè)參數(shù)在內(nèi)的每個(gè)參數(shù)都 盡量 單獨(dú)成行。
<?php $foo->bar( $longArgument, $longerArgument, $muchLongerArgument );
- 標(biāo)準(zhǔn)的 if 結(jié)構(gòu)如下代碼所示湃累,請(qǐng)留意「括號(hào)」勃救、「空格」以及「花括號(hào)」的位置,
注意 else 和 elseif 都與前面的結(jié)束花括號(hào)在同一行<?php if ($expr1) { // if body } elseif ($expr2) { // elseif body } else { // else body; }
- 賦值等號(hào)前后必須加空格符
<?php $arr = [];
PHP 7.1+ 常用新語(yǔ)法
- 三元運(yùn)算符
<?php $arr = ['crmeb'=>true]; 之前 echo isset($arr['crmeb']) ? $arr['crmeb'] : ''; 之后 echo $arr['crmeb'] ?? '';
- define() 定義常量數(shù)組
<?php
define('ARR',['a','b']);
- 命名空間優(yōu)化
<?php
//PHP7之前語(yǔ)法
use FooLibrary\Bar\Baz\ClassA;
use FooLibrary\Bar\Baz\ClassB;
// PHP7新語(yǔ)法寫(xiě)法
use FooLibrary\Bar\Baz\{ ClassA, ClassB};
CRMEB PRO規(guī)范
- 所有控制器繼承app\adminapi\controller\AuthController類(lèi)
- 所有數(shù)據(jù)驗(yàn)證放在模塊下的 validates 目錄下
- JSON返回使用父級(jí) AuthController類(lèi)中的success 和 fail
- 錯(cuò)誤判斷拋出異常治力,由一個(gè)錯(cuò)誤類(lèi)統(tǒng)一控制輸出
<?php throw new AuthException('錯(cuò)誤信息',400);
- 錯(cuò)誤碼和錯(cuò)誤提示語(yǔ)應(yīng)該統(tǒng)一管理蒙秒,方便切換多語(yǔ)言
- 數(shù)據(jù)庫(kù)操作使用模型類(lèi),不能使用Db::table()
- 獲取表單數(shù)據(jù)使用 crmeb\services\UtilService
<?php use crmeb\services\UtilService; //獲取提交的數(shù)據(jù)琴许,并以二維數(shù)組形式返回 $arr = UtilService::getMore([ 'name', 'nickname' ]); //獲取提交的數(shù)據(jù)税肪,并以二維數(shù)組形式返回并附加默認(rèn)值 $arr = UtilService::getMore([ ['name','123'], ['nickname','0'] ]); //獲取提交的數(shù)據(jù),并以一維數(shù)組形式返回并附加默認(rèn)值 [$name, $nickname] = UtilService::getMore([ ['name','123'], ['nickname','0'] ],null,true);
- 所有控制器類(lèi)命令和表名對(duì)應(yīng),按照大駝峰命名規(guī)范
- 所有文件夾命名按照小寫(xiě)字母加下劃線定義
- 所有屬性名榜田,變量名盡量遵守小駝峰命名規(guī)范
- 復(fù)雜邏輯益兄,多狀態(tài)應(yīng)適當(dāng)添加行內(nèi)注釋
AdminApi目錄結(jié)構(gòu)詳細(xì)說(shuō)明
adminapi
├─ config 配置文件存放
├─ controller 控制器文件存放
│ ├─ v1 版本號(hào)
│ │ ├─ product 產(chǎn)品管理
│ │ ├─ user 用戶管理
│ │ ├─ order 系統(tǒng)訂單管理
│ │ ├─ setting 系統(tǒng)設(shè)置維護(hù) 系統(tǒng)權(quán)限管理、系統(tǒng)菜單管理 客服管理
│ │ ├─ chat 客服管理(列表箭券,添加净捅,刪除,編輯)
│ │ ├─ application 各個(gè)應(yīng)用模塊功能管理公眾號(hào)辩块、小程序蛔六、支付寶荆永、百度小程序、今日頭條小程序
│ │ ├─ system 系統(tǒng)更新日志 數(shù)據(jù)庫(kù)管理
│ │ ├─ finance 財(cái)務(wù)管理
│ │ ├─ agent 分銷(xiāo)管理
│ │ ├─ marketing 優(yōu)惠券国章、積分具钥、拼團(tuán)、砍價(jià)液兽、秒殺
│ │ ├─ echarts 數(shù)據(jù)統(tǒng)計(jì)分析
│ │ ├─ notification 消息通知管理骂删、模版消息(列表,通知四啰,添加宁玫,編輯)、短信
│ │ ├─ file 附件文件管理
│ │ ├─ freight 運(yùn)費(fèi)模版管理 物流公司
│ │ ├─ merchant 商戶管理
│ │ ├─ widget 組件 小插件
│ │ └─ cms 文章管理
│ ├─ AuthController.php 所有控制器繼承類(lèi)
│ ├─ CommonApi.php 公共接口
│ └─ Login.php 登陸接口
├─ lang 語(yǔ)言包
│ └─ zh-cn.php 中文語(yǔ)言包
├─ validates 數(shù)據(jù)驗(yàn)證目錄
├─ AdminApiExceptionHandle.php 錯(cuò)誤捕獲
├─ common.php 公共函數(shù)存放處
├─ event.php 事件掛載
└─ provider.php 容器
主要特性
開(kāi)源無(wú)加密
源碼開(kāi)源無(wú)加密柑晒,有詳細(xì)的代碼注釋?zhuān)型暾到y(tǒng)手冊(cè)
TP6框架
使用最新的 ThinkPHP 6.0框架開(kāi)發(fā)
前端采用Vue CLI框架
前端使用Vue CLI框架nodejs打包欧瘪,頁(yè)面加載更流暢,用戶體驗(yàn)更好
標(biāo)準(zhǔn)接口
標(biāo)準(zhǔn)接口匙赞、前后端分離佛掖,二次開(kāi)發(fā)更方便
支持隊(duì)列
降低流量高峰,解除耦合涌庭,高可用
長(zhǎng)連接
減少CPU及內(nèi)存使用及網(wǎng)絡(luò)堵塞苦囱,減少請(qǐng)求響應(yīng)時(shí)長(zhǎng)
無(wú)縫事件機(jī)制
行為擴(kuò)展更方便,方便二次開(kāi)發(fā)
后臺(tái)快速生成表單
后臺(tái)應(yīng)用form-builder 無(wú)需寫(xiě)頁(yè)面快速增刪改查
數(shù)據(jù)表格導(dǎo)出
PHPExcel數(shù)據(jù)導(dǎo)出,導(dǎo)出表格更加美觀可視脾猛;
數(shù)據(jù)統(tǒng)計(jì)分析
后臺(tái)使用ECharts圖表統(tǒng)計(jì),實(shí)現(xiàn)用戶鱼鸠、產(chǎn)品猛拴、訂單、資金等統(tǒng)計(jì)分析
強(qiáng)大的后臺(tái)權(quán)限管理
后臺(tái)多種角色蚀狰、多重身份權(quán)限管理愉昆,權(quán)限可以控制到每一步操作
一件安裝
自動(dòng)檢查系統(tǒng)環(huán)境一鍵安裝
安裝
一鍵安裝
上傳你的代碼,站點(diǎn)入口目錄設(shè)置/public
在瀏覽器中輸入你的域名或IP(例如:www.yourdomain.com),
安裝程序會(huì)自動(dòng)執(zhí)行安裝麻蹋。期間系統(tǒng)會(huì)提醒你輸入數(shù)據(jù)庫(kù)信息以完成安裝跛溉,安裝完成后建議刪除install目錄下index.php文件或?qū)⑵涓拿?/p>
后臺(tái)訪問(wèn)地址:
1.域名/admin
2.域名/index.php/admin
3.域名/index.php?s=/admin
公眾號(hào)和H5首頁(yè)訪問(wèn)地址:
1.域名/
提示:正常訪問(wèn)是第一中模式,第一種訪問(wèn)不了請(qǐng)檢測(cè)URL重寫(xiě)是否配置好
安裝過(guò)程中請(qǐng)牢記您的賬號(hào)密碼扮授!
重新安裝
- 清除數(shù)據(jù)庫(kù)
- 刪除/public/install/install.lock 文件
手動(dòng)安裝
1.創(chuàng)建數(shù)據(jù)庫(kù)芳室,倒入數(shù)據(jù)庫(kù)文件
數(shù)據(jù)庫(kù)文件目錄/public/install/crmeb.sql
2.修改數(shù)據(jù)庫(kù)連接文件
配置文件路徑/.env
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1 #數(shù)據(jù)庫(kù)連接地址
DATABASE = test #數(shù)據(jù)庫(kù)名稱(chēng)
USERNAME = username #數(shù)據(jù)庫(kù)登錄賬號(hào)
PASSWORD = password #數(shù)據(jù)庫(kù)登錄密碼
HOSTPORT = 3306 #數(shù)據(jù)庫(kù)端口
CHARSET = utf8
DEBUG = true
[LANG]
default_lang = zh-cn
3.修改目錄權(quán)限(linux系統(tǒng))777
/public
/runtime
4.后臺(tái)登錄:
http://域名/admin
默認(rèn)賬號(hào):admin 密碼:crmeb.com
定時(shí)任務(wù)
在自動(dòng)收貨,庫(kù)存預(yù)警等功能使用到
php think timer [ status ] [ --d ]
參數(shù)
- status: 狀態(tài)
- start: 啟動(dòng)
- stop: 關(guān)閉
- restart: 重啟
- --d : 后臺(tái)執(zhí)行
長(zhǎng)連接服務(wù)
在h5聊天,后臺(tái)管理員消息通知等功能使用到
php think workerman [ status ] [ server ] [ --d ]
windows環(huán)境下需要分三步執(zhí)行
# 內(nèi)部通訊服務(wù)
php think workerman start channel
# h5端聊天服務(wù)
php think workerman start chat
# 后臺(tái)管理員通知
php think workerman start admin
參數(shù)
-
status: 狀態(tài)
- start: 啟動(dòng)
- stop: 關(guān)閉
- restart: 重啟
-
server: 服務(wù) (windows)
- channel: 內(nèi)部通訊
- chat: h5
- admin: 后臺(tái)
--d : 后臺(tái)執(zhí)行
文檔
參與開(kāi)發(fā)
請(qǐng)參閱 CRMEB。
版權(quán)信息
本項(xiàng)目包含的第三方源碼和二進(jìn)制文件之版權(quán)信息另行標(biāo)注刹勃。
版權(quán)所有Copyright ? 2017-2019 by CRMEB (http://www.crmeb.com)
All rights reserved堪侯。
CRMEB? 商標(biāo)和著作權(quán)所有者為西安眾邦網(wǎng)絡(luò)科技有限公司。