您好,登錄后才能下訂單哦!
今天小編給大家分享一下php cms頁面的設(shè)計(jì)和布局實(shí)例分析的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Field的意思是字段,我們在展示一條數(shù)據(jù)的時(shí)候總是要展示具體的某些字段,有時(shí)候是一條數(shù)據(jù),有時(shí)候是個(gè)循環(huán)。
一條數(shù)據(jù)的時(shí)候很好處理,我們把數(shù)據(jù)準(zhǔn)備好,然后替換相關(guān)的[field]標(biāo)簽就行了。當(dāng)循環(huán)輸出的時(shí)候,其實(shí)只需要調(diào)用顯示一條數(shù)據(jù)的方法就行了。
Field的標(biāo)簽格式大概是這樣:[field:PostTime length=10 dateFormat="yyyy-MM-dd HH:mm"/] 可以看出,F(xiàn)ield也有自己的一些屬性,就像一個(gè)Label一樣。
我們在展示Field的時(shí)候有時(shí)不可能完全按照數(shù)據(jù)庫的字段名來展示,比如 發(fā)布時(shí)間PostTime字段,我們可能需要展示為“多久以前”,比如“剛剛”,“5分鐘前”等字樣,這時(shí)候就需要調(diào)用一個(gè)方法(Render)來處理。所以Field類需要一個(gè)展示的方法成員,并且有一個(gè)存儲初始值的Value字段。
為了實(shí)現(xiàn)代碼的一致性,我們統(tǒng)一調(diào)用Render方法,但Render方法具體做什么,天知道。我們可以設(shè)計(jì)一個(gè)FieldBase,默認(rèn)返回初始值Value。
類的大概設(shè)計(jì)是這樣子:
public class FieldBase
{
public string Name {get;set;}
public string Value {get;set;}
public string Html {get;set;}//html用來存放Field的完整標(biāo)簽
public virtual string Render()
{
return Value;
}
}
那么,這么一來只要我們稍有不一致的Render都要實(shí)現(xiàn)一個(gè)具體的Field類嗎?那豈不是傳說中的類爆炸。而且,我們還要考慮如何去通過簡單的field標(biāo)簽實(shí)例化這些不同Render的子類,想想就頭大。顯然用繼承的方式來設(shè)計(jì)是有問題的。
所以,我們得把Render改下:
//…
public event Func Render;
public virtual string GetRender()
{
//if(SetValue!=null)
// SetValue(this,RowData)
if(Render!=null)
return Render(this,Value);//這句表明了一個(gè)順序問題:在調(diào)用GetRender之前,假如需要Field.Value的值的話必須先賦值,后面我們會提到。
else
return Value;
}
//public Object RowData {get;set;}
public Func SetValue;
//…
是的,我們只是增加了一個(gè)事件,并且修改了下名字,這樣就想外部公布了一個(gè)自定義的方法,但內(nèi)部實(shí)現(xiàn)調(diào)用機(jī)制。而且GetRender仍然是可重寫的,比如一些非常特殊的Field標(biāo)簽,可能就需要重寫FieldBase。
這個(gè)GetRender寫的非常簡單,實(shí)際使用情況是復(fù)雜的,你有沒有注意掉我們忽略掉了field的Parameters(那些length formate之類的),其實(shí)調(diào)用情況和Label的Parameter類似。
以上就是“php cms頁面的設(shè)計(jì)和布局實(shí)例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。