view – Zweifel an der einfachen MVC-Implementierung in PHP
怪我咯
怪我咯 2017-05-16 17:06:08
0
3
488

Warum lädt die PHP-Framework-Controller-Ebene eine Datei mit dem Suffix .tpl, das ich in die Datei geschrieben habe
<?php

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

//Frage: Warum können Dateien mit dem Suffix .tpl auch PHP-Skripte ausführen? Ist es nicht möglich, PHP nur mit .PH-Dateien zu analysieren?

怪我咯
怪我咯

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

Antworte allen(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模板的介绍

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage