ThinkLibrary
                                
                                 ThinkLibrary copied to clipboard
                                
                                    ThinkLibrary copied to clipboard
                            
                            
                            
                        Library for ThinkAdmin
è¿æ Github ç½ç»è®¿é®ä¸ç¨³å®ï¼é¡¹ç®ä¸»åºå·²è¿ç§»å° Gitee ä»åº
注æï¼Github ä»åºä¸ä¼ç»å¸¸æ´æ°ï¼è·åææ°æºç è¯·è®¿é® Gitee ä»åº
Gitee ä»åºå°åï¼https://gitee.com/zoujingli/ThinkLibrary
ThinkLibrary 6.0 for ThinkPHP 6.0
ThinkLibrary 6.0 æ¯é对 ThinkPHP 6.0 çæ¬å°è£ çä¸å¥å·¥å ·ç±»åºï¼æ¹ä¾¿å¿«éæå»º Web åºç¨ã
å å«ç»ä»¶
- æ°æ®å表å±ç¤ºï¼å¯å¸¦é«çº§æç´¢å¨ï¼
- FORM表åå¤çå¨ï¼è¡¨åå±ç¤ºåæ°æ®å ¥åºï¼
- æ°æ®ç¶æå¿«éå¤çï¼æ°æ®æå®åæ®µæ´æ°ï¼æ¯æå¤åæ®µåæ¶ï¼
- æ°æ®å®å ¨å é¤å¤çï¼ç¡¬å é¤ + 软å é¤ï¼is_deleted æ deleted åæ®µåå¨åèªå¨è½¯å é¤ï¼
- æä»¶åå¨éç¨ç»ä»¶ï¼æ¬å°æå¡åå¨ + åæäºåå¨ + ä¸çäºåå¨ + é¿éäºOSSåå¨ + è ¾è®¯äºCOSåå¨ï¼
- éç¨æ°æ®ä¿åæ´æ°ï¼éè¿ key å¼å where å¤å®æ¯å¦åå¨ï¼åå¨åæ´æ°ï¼ä¸åå¨åæ°å¢ï¼
- éç¨ç½ç»è¯·æ± ï¼æ¯æ get å postï¼å¯é 置请æ±è¯ä¹¦çï¼
- ç³»ç»åæ°éç¨ g-k-v é ç½®ï¼å¿«éåæ°é¿ä¹ åé ç½®ï¼
- UTF8å å¯ç®æ³æ¯æï¼å®å ¨URLåæ°ä¼ åæ°ï¼
- æ¥å£ CORS è·¨åé»è®¤æ¯æï¼è¾åº JSON æ ååï¼
- æ¯æè¡¨åCSRFå®å ¨éªè¯ï¼èªå¨å FORM æ ç¾æ¿æ¢ï¼
- æ´æ°åè½çå¾ æ¨æ¥åç°å¦....
åè项ç®
ThinkAdmin - V6.0
- Gitee ä»åº https://gitee.com/zoujingli/ThinkAdmin/tree/v6
- Github ä»åº https://github.com/zoujingli/ThinkAdmin/tree/v6
- ä½éªå°åï¼è´¦å·å¯ç 齿¯adminï¼https://v6.thinkadmin.top
代ç ä»åº
ThinkLibrary 为 MIT åè®®å¼æºé¡¹ç®ï¼å®è£ ä½¿ç¨æäºæ¬¡å¼åä¸å约æï¼æ¬¢è¿ fork 项ç®ã
é¨åä»£ç æ¥èªäºèç½ï¼è¥æå¼è®®å¯ä»¥èç³»ä½è è¿è¡å é¤ã
- å¨çº¿ä½éªå°åï¼https://v6.thinkadmin.top ï¼è´¦å·åå¯ç 齿¯ admin ï¼
- Gitee ä»åºå°åï¼https://gitee.com/zoujingli/ThinkLibrary
- Github ä»åºå°åï¼https://github.com/zoujingli/ThinkLibrary
使ç¨è¯´æ
- ThinkLibrary éè¦ Composer æ¯æ
- å®è£
å½ä»¤ composer require zoujingli/think-library 6.0.x-dev
- æ¡ä¾ä»£ç ï¼ æ§å¶å¨éè¦ç»§æ¿ think\admin\Controllerï¼ç¶å$thiså°±å¯è½ä½¿ç¨å ¨é¨åè½
// å®ä¹ MyController æ§å¶å¨
class MyController extend \think\admin\Controller {
    // æå®å½åæ°æ®è¡¨å
    protected $dbQuery = 'æ°æ®è¡¨å';
    
    // æ¾ç¤ºæ°æ®å表
    public function index(){
        $this->_page($this->dbQuery);
    }
    
    // å½ååè¡¨æ°æ®å¤ç
    protected function _index_page_filter(&$data){
         foreach($data as &$vo){
            // @todo ä¿®æ¹åå表
         }
    }
    
}
- å¿ è¦æ°æ®åºè¡¨SQLï¼sysdata 彿°éè¦ç¨è¿ä¸ªè¡¨ï¼
CREATE TABLE `system_data`
(
    `id`    bigint(11) unsigned NOT NULL AUTO_INCREMENT,
    `name`  varchar(100) DEFAULT NULL COMMENT 'é
ç½®å',
    `value` longtext COMMENT 'é
ç½®å¼',
    PRIMARY KEY (`id`) USING BTREE,
    KEY     `idx_system_data_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ç³»ç»-æ°æ®';
- å¿ è¦æ°æ®åºè¡¨SQlï¼sysoplog 彿°éè¦ç¨çè¿ä¸ªè¡¨ï¼
CREATE TABLE `system_oplog`
(
    `id`        bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    `node`      varchar(200)  NOT NULL DEFAULT '' COMMENT 'å½åæä½èç¹',
    `geoip`     varchar(15)   NOT NULL DEFAULT '' COMMENT 'æä½è
IPå°å',
    `action`    varchar(200)  NOT NULL DEFAULT '' COMMENT 'æä½è¡ä¸ºåç§°',
    `content`   varchar(1024) NOT NULL DEFAULT '' COMMENT 'æä½å
容æè¿°',
    `username`  varchar(50)   NOT NULL DEFAULT '' COMMENT 'æä½äººç¨æ·å',
    `create_at` timestamp     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ç³»ç»-æ¥å¿';
- å¿ è¦æ°æ®åºè¡¨SQLï¼sysconf 彿°éè¦ç¨å°è¿ä¸ªè¡¨ï¼
CREATE TABLE `system_config`
(
    `type`  varchar(20)  DEFAULT '' COMMENT 'åç±»',
    `name`  varchar(100) DEFAULT '' COMMENT 'é
ç½®å',
    `value` varchar(500) DEFAULT '' COMMENT 'é
ç½®å¼',
    KEY     `idx_system_config_type` (`type`),
    KEY     `idx_system_config_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ç³»ç»-é
ç½®';
- ç³»ç»ä»»å¡å鿝æéè¦çæ°æ®è¡¨
CREATE TABLE `system_queue` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `code` varchar(20) DEFAULT '' COMMENT 'ä»»å¡ç¼å·',
  `title` varchar(50) NOT NULL DEFAULT '' COMMENT 'ä»»å¡åç§°',
  `command` varchar(500) DEFAULT '' COMMENT 'æ§è¡æä»¤',
  `exec_data` longtext COMMENT 'æ§è¡åæ°',
  `exec_time` bigint(20) unsigned DEFAULT '0' COMMENT 'æ§è¡æ¶é´',
  `exec_desc` varchar(500) DEFAULT '' COMMENT 'ç¶ææè¿°',
  `enter_time` bigint(20) DEFAULT '0' COMMENT 'å¼å§æ¶é´',
  `outer_time` bigint(20) DEFAULT '0' COMMENT 'ç»ææ¶é´',
  `attempts` bigint(20) DEFAULT '0' COMMENT 'æ§è¡æ¬¡æ°',
  `rscript` tinyint(1) DEFAULT '1' COMMENT 'å便¨¡å¼',
  `status` tinyint(1) DEFAULT '1' COMMENT 'ä»»å¡ç¶æ(1æ°ä»»å¡,2å¤çä¸,3æå,4失败)',
  `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_system_queue_code` (`code`),
  KEY `idx_system_queue_title` (`title`) USING BTREE,
  KEY `idx_system_queue_status` (`status`) USING BTREE,
  KEY `idx_system_queue_rscript` (`rscript`) USING BTREE,
  KEY `idx_system_queue_create_at` (`create_at`) USING BTREE,
  KEY `idx_system_queue_exec_time` (`exec_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ç³»ç»-ä»»å¡';
å表å¤ç
// å表å±ç¤º
$this->_page($dbQuery, $isPage, $isDisplay, $total);
// å表å±ç¤ºæç´¢å¨ï¼æ nameãtitle æ¨¡ç³æç´¢ï¼æ status 精确æç´¢ï¼
$this->_query($dbQuery)->like('name,title')->equal('status')->page();
// 对å表æ¥è¯¢å¨è¿è¡äºæ¬¡å¤ç
$query = $this->_query($dbQuery)->like('name, title')->equal('status');
$db = $query->db(); // @todo è¿éå¯ä»¥å¯¹dbè¿è¡æä½
$this->_page($db); // æ¾ç¤ºå表å页
表åå¤ç
// è¡¨åæ¾ç¤ºåæ°æ®æ´æ°
$this->_form($dbQuery, $tplFile, $pkField , $where, $data);
å é¤å¤ç
// æ°æ®å é¤å¤ç
$this->_deleted($dbQuery);
ç¦ç¨å¯ç¨å¤ç
// æ°æ®ç¦ç¨å¤ç
$this->_save($dbQuery, ['status'=>'0']);
// æ°æ®å¯ç¨å¤ç
$this->_save($dbQuery, ['status'=>'1']);
æä»¶åå¨ç»ä»¶ï¼ oss å qiniu éè¦é ç½®åæ°ï¼
// é
ç½®é»è®¤å卿¹å¼    
sysconf('storage.type','æä»¶åå¨ç±»å');
// ä¸çäºåå¨é
ç½®
sysconf('storage.qiniu_region', 'æä»¶åå¨èç¹');
sysconf('storage.qiniu_domain', 'æä»¶è®¿é®åå');
sysconf('storage.qiniu_bucket', 'æä»¶åå¨ç©ºé´åç§°');
sysconf('storage.qiniu_is_https', 'æä»¶HTTP访é®åè®®');
sysconf('storage.qiniu_access_key', 'æ¥å£ææAccessKey');
sysconf('storage.qiniu_secret_key', 'æ¥å£ææSecretKey');
// çææä»¶åç§°(龿¥urlææä»¶md5)
$filename = \think\admin\Storage::name($url, $ext, $prv, $fun);
// è·åæä»¶å
容ï¼èªå¨å卿¹å¼ï¼
$result = \think\admin\Storage::get($filename);
// ä¿åå
容尿件ï¼èªå¨å卿¹å¼ï¼
$result = \think\admin\Storage::save($filename, $content);
// 夿æä»¶æ¯å¦åå¨
boolean \think\admin\Storage::has($filename);
// è·åæä»¶ä¿¡æ¯
$result = \think\admin\Storage::info($filename);
//æå®åå¨ç±»åï¼è°ç¨æ¹æ³ï¼
$result = \think\admin\Storage::instance('local')->save($filename, $content);
$result = \think\admin\Storage::instance('qiniu')->save($filename, $content);
$result = \think\admin\Storage::instance('txcos')->save($filename, $content);
$result = \think\admin\Storage::instance('alioss')->save($filename, $content);
// 读åæä»¶å
容
$result = \think\admin\Storage::instance('local')->get($filename);
$result = \think\admin\Storage::instance('qiniu')->get($filename);
$result = \think\admin\Storage::instance('txcos')->get($filename);
$result = \think\admin\Storage::instance('alioss')->get($filename);
// çæ URL 访é®å°å
$result = \think\admin\Storage::instance('local')->url($filename);
$result = \think\admin\Storage::instance('qiniu')->url($filename);
$result = \think\admin\Storage::instance('txcos')->url($filename);
$result = \think\admin\Storage::instance('alioss')->url($filename);
// æ£æ¥æä»¶æ¯å¦åå¨
boolean \think\admin\Storage::instance('local')->has($filename);
boolean \think\admin\Storage::instance('qiniu')->has($filename);
boolean \think\admin\Storage::instance('txcos')->has($filename);
boolean \think\admin\Storage::instance('alioss')->has($filename);
// çææä»¶ä¿¡æ¯
$resutl = \think\admin\Storage::instance('local')->info($filename);
$resutl = \think\admin\Storage::instance('qiniu')->info($filename);
$resutl = \think\admin\Storage::instance('txcos')->info($filename);
$resutl = \think\admin\Storage::instance('alioss')->info($filename);
éç¨æ°æ®ä¿å
// æå®å
³é®åæ´æ°ï¼$where 为æ©å±æ¡ä»¶ï¼
boolean data_save($dbQuery, $data, 'pkname', $where);
éç¨ç½ç»è¯·æ±
// åèµ·get请æ±
$result = http_get($url, $query, $options);
// åèµ·post请æ±
$result = http_post($url, $data, $options);
ç³»ç»åæ°é ç½®ï¼åºäº system_config æ°æ®è¡¨ï¼
// è®¾ç½®åæ°
sysconf($keyname, $keyvalue);
// è·ååæ°
$keyvalue = sysconf($kename);
UTF8å å¯ç®æ³
// å符串å å¯æä½
$string = encode($content);
// å å¯å符串解å¯
$content = decode($string);
èµå©æèµ
