PHP MVC框架 視圖之常用學習筆記
來源:程序員人生 發(fā)布時間:2014-03-01 05:36:28 閱讀次數(shù):3170次
本文章來給大家介紹PHP MVC框架視圖學習筆記,以方便以后需要參考.今天來講講view,視圖...沒了解之前,你可能覺得模板引擎很神奇,了解了之后你會覺得,原來是如此簡單...
對于模板引擎而言,它的原理一般是這樣,把模板引擎的語言替換成可執(zhí)行的語言,然后把變量輸出...因為PHP本身就是一個良好了模板引擎,所以用原生的模板引擎是灰常方便和容易做到的...
index.html實例代碼如下:
- <html>
- <head>
- <title><?php echo $title ?></title>
- </head>
- <body>
- <h1><?php echo $content ?></h1>
-
- <?php if( ! emptyempty($arr)) { ?>
- <ul>
- <?php foreach($arr as $value) { ?>
- <li><?php echo $value ?></li>
- <?php } ?>
- </ul>
- <?php } ?>
-
- </body>
- </html>
想上面這樣一個html頁面,采用的就是原生的php模板引擎,服務(wù)器在你include這個頁面時,會處理html中的PHP代碼.
你也許會問,要是我想定制模板語言可以嗎?答案當然是可以的,像我上面說的,用模板引擎的語言,只需要多做一步,就是把模板引擎的語言替換成標準的PHP語言...
index_2.html實例代碼如下:
- <html>
- <head>
- <title><?php echo $title ?></title>
- </head>
- <body>
- <h1><?php echo $content ?></h1>
-
- <ifexist arr>
- <ul>
- <for value = arr>
- <li><echo value></li>
- <endfor>
- </ul>
- <endexist>
-
- </body>
- </html>
看看這個頁面,發(fā)現(xiàn)和index.html 有什么不同嗎,沒錯,就是在循環(huán)那里,我們用的不是標準的php語言,而是,按照自己的喜好,定義了幾個模板語言,一個是<ifexist xxx>這個是判斷xxx變量是否存在,而且不為空,后面那個<for xx1=xx2>是循環(huán)迭代xx2變量,中間的<echo xx> 是輸出xx變量,怎么替換成標準語言呢?這個可以使用正則替換,因為字符串替換無法滿足我們需求了.
實例代碼如下:
- $pattern = array(
- ‘/<ifexists+(w+)>/i’,
- ‘/<fors+(w+)s=s(w+)>/’,
- ‘/<echos+(w+)>/’
- );
-
- $replacement = array(
- ‘<?php if( ! emptyempty($1)){ ?>’,
- ‘<?php foreach($2 as $1){ ?>’,
- ‘<?php echo $1 ?>’
- );
-
- $content = preg_replace($pattern, $replacement, $content);
-
- $search = array(‘<endexist>’, ‘<endfor>’);
-
-
- $content = str_replace($search, ‘<?php } ?>’, $content);
上面的正則就可以幫我們把剛剛定義的標簽,轉(zhuǎn)換成標準p hp語言...轉(zhuǎn)換之后是這樣,請看圖.
轉(zhuǎn)換之后可以輸出了嗎?答案是不行的,因為你獲取到html文件的內(nèi)容的時候,php就已經(jīng)解釋了,那時候你還沒替換成標準的php語言,所以,你現(xiàn)在輸出的話,其中的php代碼就沒有執(zhí)行...不過我們可以利用 php eval 這個函數(shù),來強制要求執(zhí)行其中的代碼.
實例代碼如下:
- $content = eval(‘ ?>’.$content);
注意哦,要 ?>.$content 要不,php會把其中的html當成是php代碼的執(zhí)行,這樣就會出錯了...刷新一下,ok,已經(jīng)可以執(zhí)行了~~~
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈