# :-: iThink web開發框架
*****
### **應用化**
>[danger]
> #### 像開發 安卓 / IOS 應用一樣的開發web應用,iThink 提供完善的安裝,卸載,打包機制,所有開發的應用都以一個應用包的形式存在,可以打包后免費或收費的分享他人使用
### **自動化**
>[danger]
> ### 一鍵生成web應用骨架代碼和數據表的 CRUD,包括控制器口,模型,驗證器等基類,實現高速開發
> #### 自動構造表格,表單元素,無需修改前端頁面
### **抽象化**
>[danger]
> #### iThink 分controller、logic、model、service、view 共5層,層層抽象,層層封裝,最大限度的實現代碼復用,無需編寫一行重復代碼
### **權限精細化**
>[danger]
> #### 基于 RBAC + Auth 的權限管理機制,精確到按鈕的控制,每個按鈕有 is_display 屬性,配合 Auth 類可靈活控制頁面上每個按鈕的顯示與否
## **體驗demo http://demo.ithinkphp.org/admin**
## **git下載 https://gitee.com/wf5858585858/iThink**
## **下載安裝包 http://demo.ithinkphp.org/iThink-master.zip**
*****
* [ ] iThink是一個基于thinkphp5.0開發的模塊化,應用化,自動構造化的WEB應用開發框架(Web Application Framework),集成高可用,高穩定的頁面構造器,可以極其方便的構造后臺頁面包括表單,表格,上傳等組件在內的各種元素!是筆者在參考了當前10多個主流的基于TP5的CMF/CMS的架構和思想后的沉淀出的產品!
* [ ] iThink實現應用與框架核心分離,可以將開發的應用打包,以免費或者收費的形式分享其他人使用。
* [ ] 服務器端CURD操作不需要修改前端html頁面,前端頁面所有元素都通過php構造完成,由筆者傾心打造的頁面構造器,只為省去修改前端頁面的煩惱。
* [ ] 頁面所有元素都可定制,極大提高開發效率,10分鐘即可完成一個表的curd功能,十分高效。
* [ ] 服務器端架構遵循十分先進的設計思想,靈活應用各種設計模式,分controller、logic、model、service、view 共5層,擁有一套自定義的依賴注入機制,將“抽象”的思想發揮的淋漓盡致,最大限度的實現代碼復用,讓你不需要多寫一行重復代碼,將全部精力投入編寫應用邏輯!
<div>
<div class="panel-heading">
</div>
<table class="table">
<tbody>
<tr>
<td>產品名稱</td>
<td>iThink</td>
</tr>
<tr>
<td>官方網站</td>
<td>
<a target="_blank" href="http://www.ithinkphp.org">www.ithinkphp.org</a>
</td>
</tr>
<tr>
<td>后臺演示</td>
<td>
<a target="_blank" href="http://demo.ithinkphp.org/admin">demo.ithinkphp.org/admin</a>(輸入驗證碼即可登錄)
</td>
</tr>
<tr>
<td>前臺演示</td>
<td>
<a target="_blank" href="http://demo.ithinkphp.org">demo.ithinkphp.org</a>
</td>
</tr>
<tr>
<td>碼云倉庫</td>
<td>
<a target="_blank" href="https://gitee.com/wf5858585858/iThink">https://gitee.com/wf5858585858/iThink</a>
</td>
</tr>
<tr>
<td>交流社區</td>
<td>
<a target="_blank" href="http://forum.ithinkphp.org">forum.ithinkphp.org</a>
</td>
</tr>
<tr>
<td>開發手冊(持續更新中)</td>
<td>
<a target="_blank" href="http://www.hmoore.net/wf00568/main">http://www.hmoore.net/wf00568/main</a>
</td>
</tr>
<tr>
<td>交流QQ群</td>
<td>419395011</td>
</tr>
<tr>
<td>聯系郵箱</td>
<td>wf585858@yeah.net</td>
</tr>
</tbody>
</table>
</div>
### :-: **特性**
## 高效開發-表單與表格元素構造器
* [ ] 由筆者傾心打造的頁面構造器類庫,所有的常用的頁面元素,可以通過調用一個函數來直接生成,包括表單里常用的輸入組件(文本,密碼,單選,復選,開關,option,時間選擇,單/多文件上傳,單/多圖片上傳,地域選擇,富文本編輯器(自帶ueditor和summernote))等等,和表格里的常用組件,包括單個td,tr,按鈕,開關,option選項等等,還有搜索表單框的各種組件等,有需要亦可自己添加組件,詳情可參考文檔 ,代碼參考 extend\builder;(其中integrationTags類是元素生成類,是對其他功能的封裝,可直接調用,使用方式參考admin模塊下的view文件夾),下面有張圖可以比較直觀的看到效果
## RBAC+AUTH 權限驗證 (重寫 AUTH 類)
* [ ] 基于RBAC和Auth類結合的權限驗證管理系統,實現標準的RBAC0授權模型,如果有需要可升級RBAC1-3,參考 http://www.woshipm.com/pd/440765.html
* [ ] 對TP自帶的Auth類做了全面的抽象和重寫,功能更細致,更完善,與系統徹底解耦(可以把類提出來,放到YII或者laravel里用都沒問題),參考` auth\permission\Auth;
`
## 元素級權限控制機制
* [ ] 可以對頁面里的單個元素(一個按鈕,表格里的一個字段等)做精細化控制,是否可見,是否可直接編輯。比如設置某表格,在A角色登陸時,當B字段的值為5的時候,C字段是否可編輯,刪除按鈕是否可用等,十分靈活,只需要編寫配置文件即可 ,參考` auth\view\Auth;` 配置文件參考` app\extra
`
## 分片上傳處理
* [ ] 重寫上傳處理邏輯,TP官方自帶的上傳類使用方便,但因為不是分片上傳(參考think\File類里的move方法使用的move_uploaded_file函數),這意味著如果需要上傳G級文件,將導致性能問題(幾乎是不可能完成)。為此重寫了上傳處理邏輯,配合webuploader插件(百度官方插件),實現分片上傳,上傳G級文件也沒問題,前后端組件都已經封裝,只需調用一個函數即可,包括單/多文件上傳,單/多圖片上傳,前端調用參考`extend\builder\integrationTags`的`upload`方法,分片處理邏輯參考 `extend\upload\uploader
`
## 應用化
* [ ] 平臺本身只有后臺管理,其他功能需要安裝應用來實現,擁有十分完善的安裝,卸載,應用打包,數據配置自動生成機制。基本可以理解為安卓系統和apk安裝包之間的關系,平臺安裝后自帶有一個博客系統供開發者參考學習 ,參考` app\admin\logic\Module;
`
## 自定義依賴注入機制
* [ ] 擁有一套自定義的依賴注入機制,trait引入,通過__get實現,可以在任何類里僅通過調用自身屬性即可得到任何模塊下的model、logic、service的實例,無需繁瑣的使用model方法實例化模型,參考 `app\common\common\set;
`
## 齊全的調用示例
* [ ] 對筆者提及到的每個功能,都寫的專門的調用示例,參考 `app\demo\controller\Example
`
## 架構
* [ ] 基于TP5編寫則意味著TP5官網聲明的功能都可以隨意搭配,包括分布式、負載均衡、集群、Redis、分庫分表、nosql緩存等各種機制,參考TP5官方文檔 http://www.hmoore.net/manual/thinkphp5/122950
* [ ] iThink 在TP的所提倡的mvc的基礎上,做了更細化的分層,抽象出了logic和service層,可以更好的實現代碼的復用,每個層級都有自己的職責,互不干擾
## 規范
* [ ] 遵循PSR-2、PSR-4規范,Composer及單元測試支持
* [ ] 擁有自己的數據庫定義規范,確保每個開發者開都有相同的開發規范
## 開源
* [ ] 程序完全開源不加密,采用 apache2 協議發布,這意味您可以自由修改、派生版本、商用而不用擔心任何法律風險。文檔十分齊全,代碼中預留了大量鉤子和注釋,方便二次開發,最大化滿足用戶的功能需求。需要聲明的是您二次開發的作品使用和運營過程必須遵守國家相關法律法規,iThink官方不承擔任何責任。
## 嚴謹
* [ ] (by thinkphp)異常嚴謹的錯誤檢測和安全機制,詳細的日志信息,為你的開發保駕護航;
## 靈活
* [ ] (by thinkphp)減少核心依賴,擴展更靈活、方便,支持命令行指令擴展;
## API友好
* [ ] (by thinkphp)出色的性能和REST支持、遠程調試,更好的支持API開發;
## 高效
* [ ] (by thinkphp)惰性加載,及路由、配置和自動加載的緩存機制;
## ORM
* [ ] (by thinkphp)重構的數據庫、模型及關聯,MongoDb支持;
## 前端
* [ ] 采用 Bootstrap(hplus) 作為前端類庫,比起adminLTE功能更強大,組件更豐富,參考 http://www.zi-han.net/theme/hplus/
*****
### :-: **即將實現**
* [ ] AOP插件機制,采用 hook插入,overwrite 方式覆蓋,性能方面零損耗,強大而又簡單,并且不影響性能,不影響編譯。使用者可自由擴展程序的功能,開發者可盡情二次開發。
* [ ] 通用的會員模塊和API模塊
* [ ] 共用同一賬號體系的Web端會員中心權限驗證和API接口會員權限驗證
* [ ] 二級域名部署支持,同時域名支持綁定到插件
* [ ] 多語言支持,服務端及客戶端支持
* [ ] 強大的第三方模塊支持(CMS、博客、文檔生成、個人免簽支付)
* [ ] 整合第三方短信接口(阿里云、創藍短信)
* [ ] 無縫整合第三方云存儲(七牛、阿里云OSS、又拍云)功能
* [ ] 第三方登錄(QQ、微信、微博)整合
*****
### :-: **版權申明**
* [ ] iThink是基于ThinkPHP5開發的一款免費開源、簡單高效、注重易用性的面向對象框架。結合多種優良語言特性,新穎的設計思想,并且保持出色的性能。遵循Apache2開源許可協議發布,可免費使用,但未經授權不可抹除產品標志再次發布。
*****
### :-: **鳴謝**
感謝以下優秀的開源項目,排名不分先后
* [ ] ThinkPHP:http://www.thinkphp.cn
* [ ] Bootstrap:http://getbootstrap.com
* [ ] jQuery:http://jquery.com
* [ ] layer:https://www.layui.com
- 序言
- 圖片預覽
- 詮釋高效開發
- 提問的智慧
- GIT命令參考
- 安裝composer
- 斷點調試技巧
- 調試環境的搭建
- 調試工具的使用及技巧
- 前置基礎-TP底層講解
- 理解編程的抽象
- 耦合與解耦
- 自動加載
- 反射類
- 控制反轉(IOC)和依賴注入(DI)
- iThink 自定義依賴注入的實現
- 常用設計模式
- SPL標準庫
- 行為-鉤子-插件
- AOP-面向切面
- RBAC和Auth類的本質
- 安裝iThink
- 環境要求
- 代碼下載與環境配置
- 執行安裝
- 體驗測試模塊
- apache配置
- nginx配置
- 系統架構詳解
- 目錄詳解
- 執行流程圖
- 數據字典
- RBAC 權限管理架構
- 系統分層詳解
- 控制器層(controller)
- 邏輯層(logic)
- 視圖層(view)
- 模型層(model)
- 服務層(service)
- 應用包架構詳解
- 目錄結構
- 開發規范
- 數據庫規范
- 編碼規范
- 功能設計原則與規范
- 后臺功能詳解
- 基礎功能
- RBAC + Auth 權限機制
- 應用化功能機制
- 代碼生成器(重要)
- 應用骨架代碼生成
- 數據表 CURD 代碼生成
- 頁面構造器(重要)
- 通用元素構造器
- 表格元素構造器
- 搜索表單元素構造器
- 表單元素構造
- 閉包事物構造器
- 應用的開發
- 函數參考