PHP MVC架構 視圖之常用學習筆記

來源:互聯網
上載者:User

今天來講講view,視圖。。。沒瞭解之前,你可能覺得模板引擎很神奇,瞭解了之後你會覺得,原來是如此簡單。。。

對於模板引擎而言,它的原理一般是這樣,把模板引擎的語言替換成可執行檔語言,然後把變數輸出。。。

因為PHP本身就是一個良好了模板引擎,所以用原生的模板引擎是灰常方便和容易做到的。。。


index.html

 代碼如下 複製代碼
 
<html>  
<head>  
    <title><?php echo $title ?></title>  
</head>  
<body>  
<h1><?php echo $content ?></h1>  
 
<?php if( ! empty($arr)) { ?>  
<ul>  
    <?php foreach($arr as $value) { ?>  
    <li><?php echo $value ?></li>  
    <?php } ?>  
</ul>  
<?php } ?>  
 
</body>  
</html> 

想上面這樣一個html頁面,採用的就是原生的php模板引擎,伺服器在你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> 

看看這個頁面,發現和index.html 有什麼不同嗎,沒錯,就是在迴圈那裡,我們用的不是標準的php語言,而是,按照自己的喜好,定義了幾個範本語言,一個是<ifexist xxx>這個是判斷xxx變數是否存在,而且不為空白,後面那個<for xx1=xx2>是迴圈迭代xx2變數,中間的<echo xx> 是輸出xx變數

怎麼替換成標準語言呢?這個可以使用正則替換,因為字串替換無法滿足我們需求了。

 代碼如下 複製代碼
 
$pattern = array(  
    ‘/<ifexists+(w+)>/i’,  
    ‘/<fors+(w+)s=s(w+)>/’,  
    ‘/<echos+(w+)>/’  
);  
 
$replacement = array(  
    ‘<?php if( ! empty($\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); 

 

上面的正則就可以幫我們把剛剛定義的標籤,轉換成標準p hp語言。。。

轉換之後是這樣,請看圖。

 

轉換之後可以輸出了嗎?答案是不行的,因為你擷取到html檔案的內容的時候,php就已經解釋了,那時候你還沒替換成標準的php語言,所以,你現在輸出的話,其中的php代碼就沒有執行。。。不過我們可以利用 php eval 這個函數,來強制要求執行其中的代碼。

 代碼如下 複製代碼

$content = eval(‘ ?>’.$content);

注意哦,要 ?>.$content 要不,php會把其中的html當成是php代碼的執行,這樣就會出錯了。。。

重新整理一下,ok,已經可以執行了~~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.