搜尋

首頁  >  問答  >  主體

view - PHP簡單MVC實現的疑惑

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

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

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

怪我咯怪我咯2740 天前494

全部回覆(3)我來回復

  • 某草草

    某草草2017-05-16 17:08:08

    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>

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

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 17:08:08

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

    回覆
    0
  • 大家讲道理

    大家讲道理2017-05-16 17:08:08

    這是範本檔案

    可以看看smarty範本的介紹

    回覆
    0
  • 取消回覆