跳到主要內容
文件

開發者指南

常用核心類別

精選第三方開發中常用的核心類別・函式並加以整理。這不是完整規格,而是一份「該到哪裡找什麼」的地圖。框架類別位於 Zittme\Framework\ 命名空間(Rhymix\Framework\ 亦相容)。

Context:請求與畫面之間

$value = Context::get('key');          // 요청 변수·설정값 읽기
Context::set('items', $list);          // 템플릿으로 값 넘기기
Context::get('is_logged');             // 로그인 여부
Context::get('logged_info');           // 로그인 회원 정보
Context::setBrowserTitle('제목');
Context::addBodyClass('my-class');
Context::loadLang('modules/foo/lang');

注意:Context::set() 會覆蓋同名的請求變數。proc 動作的表單值,直接讀取 $_POST 較為安全。

DB

$output = executeQuery('모듈.쿼리명', $args);       // 단건 성격
$output = executeQueryArray('모듈.쿼리명', $args);  // 결과 항상 배열
$srl = getNextSequence();                            // 고유 번호 발급

請以 $output->toBool() 確認是否成功,失敗時直接回傳 $output,錯誤訊息就會傳遞出去。詳細內容請參閱查詢 XML。

模組資訊

ModuleModel::getModuleInfoByMid($mid);     // mid의 인스턴스 정보
ModuleModel::isIDExists($mid);             // mid 중복 확인
ModuleModel::getModuleConfig('모듈명');     // 모듈 전역 설정
getController('module')->insertModuleConfig('모듈명', $config);  // 설정 저장
ModuleModel::loadSkinInfo($path, $skin);   // 스킨 메타데이터 (responsive 포함)

會員

MemberModel::getMemberInfoByMemberSrl($member_srl);
MemberModel::getGroups();                  // 회원 그룹 목록
$logged_info = Context::get('logged_info');
$logged_info->is_admin === 'Y';            // 최고관리자 여부
$logged_info->group_list;                  // 소속 그룹 (키 = group_srl)

快取:Zittme\Framework\Cache

use Zittme\Framework\Cache;

$data = Cache::get('mykey');
Cache::set('mykey', $data, 300);           // 300초
Cache::delete('mykey');
Cache::clearGroup('모듈명');                // 그룹 단위 비우기

負擔較重的查詢請加以快取,但別忘了在變更資料的動作中清除相關快取。

檔案:Zittme\Framework\Storage

use Zittme\Framework\Storage;

Storage::exists($path);
Storage::createDirectory($path);
Storage::move($from, $to);
Storage::delete($path);
Storage::isDirectory($path);

路徑常數:RX_BASEDIR(安裝根目錄)、RX_BASEURL、RX_TIME(請求時間)。慣例上檔案放在 files/ 下各模組的資料夾中。

郵件:Zittme\Framework\MailTemplate

這是核心共用的郵件框架。它會從設定中讀取網站名稱・網址・強調色,產生一致的外觀。

use Zittme\Framework\MailTemplate;

$body = MailTemplate::wrap('제목', $content_html);
$table = MailTemplate::infoTable(['항목' => '값']);
$button = MailTemplate::button('확인하기', $url);

常用全域函式

函式用途
getUrl(...) / getNotEncodedUrl(...)產生 URL(差別在於是否編碼)
getNotEncodedFullUrl(...)包含網域的完整 URL
lang('key')語言字串
escape($str)HTML 跳脫
zdate($ymdhis, 'Y-m-d')格式化 YYYYMMDDHHIISS 字串
getNextSequence()唯一編號
toBool($val)將 Y/N 等慣用寫法轉換為布林值
isCrawler()是否為搜尋引擎機器人

確認是否實際存在的習慣

需要這裡沒有列出的 API 時,請先在核心原始碼中確認它確實存在再使用。憑相似名稱猜測呼叫,是第三方錯誤的一大原因。最快的方法是在核心模組(board・member・document)中找出做同樣事情的程式碼並照著做。