view - PHP簡單MVC實現的疑惑
怪我咯
怪我咯 2017-05-16 17:06:08
0
3
515

為什麼PHP框架控制器層載入一個.tpl為後綴的檔案,我在檔案裡面寫
<?php

echo $name; //居然能输出正确的值

//問題,為啥.tpl後綴的檔案為啥也能執行PHP腳本呢??不是用過.PH的檔案才能解析PHP嗎?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(3)
某草草
  1. PHP解釋器只關心檔案內容,副檔名是什麼它並不關心

  2. 在程式碼裡面require/include其它的文件,是在一次編譯運行的周期裡面的,而不是每次開一個新文件新開一個解釋器

  3. 為了方便和其它文件區分,在web伺服器上面會配置某種擴展名發送給PHP,這只是對入口文件有約束,運行起來之後require/include了什麼和這個配置早已無關,不這麼做的話,變成什麼檔案類型都會送到PHP裡面過一遍,出於效能和安全性考慮這都是不現實的(換句話說,你需要獨立看待PHP和Web伺服器)

舉個例子
對於nginx來說,是

    location ~ .*\.(php|php5)?$
    {
        fastcgi_pass   unix:/var/run/php.socket;
        fastcgi_index  index.php;
        include        fastcgi.conf;
    }

對於apache來說,也就是

 <FilesMatch \.php$>
    SetHandler application/x-httpd-php
 </FilesMatch>

其實你都可以改,改成任意自己希望的擴展名,或者甚至全匹配(當然不建議真的這麼幹)

淡淡烟草味

框架本身載入.tpl檔後解析為php程式碼了。就好像你用php載入一個xml檔然後解析xml然後輸出一樣。我說的也不算很準確,但是差不多這個意思吧。

大家讲道理

這是範本檔案

可以看看smarty範本的介紹

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板