自動關(guān)聯(lián)與生成

2018-06-13 16:17 更新

模塊就是數(shù)據(jù)表,ModPHP 會根據(jù)數(shù)據(jù)庫結(jié)構(gòu)來自動創(chuàng)建模塊類和函數(shù)。系統(tǒng)默認(rèn)自帶?user, file, category, post, comment?五個數(shù)據(jù)表(模塊)。 數(shù)據(jù)庫結(jié)構(gòu)由配置文件 database.php 定義,實際上是一個二維數(shù)組(數(shù)據(jù)表和字段),結(jié)構(gòu)大致如下:

<?php
return array(
? ? 'user'=>array(
????????'user_id' => 'INT(15) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY',
????????'user_name' => 'VARCHAR(255) NOT NULL',
????????'user_nickname' => 'VARCHAR(255) NOT NULL',
? ? ...
);

添加更多模塊或者更改已有模塊結(jié)構(gòu): 編輯 database.php 文件添加數(shù)據(jù)表和字段,然后執(zhí)行 mod::update() 方法。系統(tǒng)會自動更新數(shù)據(jù)庫表結(jié)構(gòu),并自動生成與其對應(yīng)的模塊類文件(如果新增模塊)? {module}.class.php,?存放在?user/classes/目錄中。

模塊類:

模塊類繼承了 mod 類的所有方法。其中包含了一些直接操作數(shù)據(jù)庫記錄的方法,如?add(), update(), delete(), get(), getMulti(), search()?等。比如要獲取一位 user_id 為 1 的用戶,只需要這么做:

<?php
require('mod.php'); //如果在模板文件中,這一步是不需要的
$result = user::get(array('user_id'=>1));
print_r($result['data']); //$result 是一個關(guān)聯(lián)數(shù)組,至少包含 success 和 data 兩個鍵值對。success 是一個布爾值,如果獲取信息成功則為 true, 否則為 false; data 是一個存儲結(jié)果的關(guān)聯(lián)數(shù)組或錯誤信息

模塊函數(shù):

系統(tǒng)會自動注冊與模塊對應(yīng)的相關(guān)函數(shù),這些函數(shù)包括: 1.?_{module}(): 包含掛鉤函數(shù)、當(dāng)前分頁、總頁數(shù)等與模塊相關(guān)信息的函數(shù) 2.?get_{module}(): 獲取單條與模塊關(guān)聯(lián)的記錄的函數(shù) 3.?getmulti{module}(): 獲取多條與模塊關(guān)聯(lián)的記錄的函數(shù) 4.?getsearch{module}(): 搜索(模糊查詢)多條與模塊關(guān)聯(lián)的記錄的函數(shù) 5.?the_{module}(): 存儲當(dāng)前記錄信息的函數(shù)? 6.?{module}_*(): 與數(shù)據(jù)表字段名對應(yīng)的直接獲取字段數(shù)據(jù)的函數(shù) 7.?prev_{module}(): 獲取上一條記錄的函數(shù) 8.?next_{module}(): 獲取下一條記錄的函數(shù) 9.?{module}_parent(): 獲取父記錄的函數(shù),數(shù)據(jù)表存在 {module}parent 字段時才會注冊該函數(shù) 10.?[{module}{ex-table}()](http://modphp.hyurl.com/function-module-ex-table):?獲取從表記錄的函數(shù),數(shù)據(jù)表存在外鍵才會注冊

所以獲取 user_id = 1 的用戶也可以使用下面這種簡單的方式:

<?php
if(get_user(1)){ //因為 user_id 是主鍵,可以直接使用整數(shù),其他參數(shù)需要用數(shù)組,如 array('user_name'=>'someone')
    print_r(the_user());
}

要同時獲取多位用戶,可以使用下面這種方式:

<?php
while(get_multi_user()){ //同樣,你可以為 get_multi_*() 類函數(shù)提供一個關(guān)聯(lián)數(shù)組作為參數(shù)來進(jìn)行更精確的獲取
    print_r(the_user());
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號