## 用戶行為
用戶行為是記錄用戶操作,繼而生成日志的操作。在記錄日志的同時,也可以操作一些數據,如用戶積分的增減。
用戶在網站的每一個操作都可以看成一個行為,例如:登錄、評論、發布文章……
> 在什么情況下需要定義行為:
>
> 對某張表的某個字段值的修改是不確定的,且修改操作是由系統自動執行的
## 用戶行為規則
~~~
# 規則定義 table:$table|field:$field|condition:$condition|rule:$rule[|cycle:$cycle|max:$max][;......]
# 規則字段解釋:table->要操作的數據表,不需要加表前綴;
# field->要操作的字段;
# condition->操作的條件,目前支持字符串,默認變量{$self}為執行行為的用戶,解析行為時會進行替換
# rule->對字段進行的具體操作,目前支持四則混合運算,如:1+score*2/2-3
# cycle->執行周期,單位(小時),表示$cycle小時內最多執行$max次
# max->單個周期內的最大執行次數($cycle和$max必須同時定義,否則無效)
# 單個行為后可加 ; 連接其他規則
~~~
示例:`table:member|field:score|condition:uid={$self} AND status>-1|rule:9-2+3+score*1/1|cycle:24|max:1;`
表示修改`think_member`表的score字段,修改條件為`'uid={$self} AND status>-1'`,修改的值為`9-2+3+score*1/1`,每24個小時最多執行一次
用TP的寫法來表示:`D('Member')->where("uid={$self} AND status>-1")->setField('score', '9-2+3+score*1/1');`
## 行為日志規則
如何記錄行為日志的備注由該行為定義,如果未定義則只記錄操作URL。
日志規則里可以使用變量和函數。使用方式:[變量名|函數名]
> 目前有如下變量
>
> user:觸發行為的用戶編號(uid)
>
> time:觸發行為的時間(NOW_TIME)
>
> model:觸發行為的模型
>
> record:觸發行為的記錄編號
>
> data:上述變量結合的一個數組array('user'=>$user_id,,'model'=>$model,'record'=>$record_id,'time'=>NOW_TIME)
函數是已定義的公共函數。變量將會傳遞給函數的第一個參數。
該函數一般需要返回處理過的結果,用于日志變量的替換。