Heim > Fragen und Antworten > Hauptteil
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?
某草草2017-05-16 17:08:08
PHP解释器只关心文件内容,扩展名是什么它并不关心
在代码里面require/include其它的文件,是在一次编译运行的周期里面的,而不是每次开一个新文件新开一个解释器
为了方便和其它文件区分,在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>
其实你都可以改,改成任意自己希望的扩展名,或者甚至全匹配(当然不建议真的这么干)
淡淡烟草味2017-05-16 17:08:08
框架本身加载.tpl文件后解析为php代码了。就好像你用php加载一个xml文件然后解析xml然后输出一样。我说的也不算很准确,但是差不多这个意思吧。