美好的一天。为什么可以编写这样的php语句?
<?php if (is_home()) { ?>
//some code
<?php } ?>
谢谢。
答案 0 :(得分:2)
PHP实际上最初是作为模板语言设计的。更多关于PHP的历史(这是非常有趣的):)。
例如,在PHP 2及更低版本中,语法如下所示:
<!--include /text/header.html-->
<!--getenv HTTP_USER_AGENT-->
<!--ifsubstr $exec_result Mozilla-->
Hey, you are using Netscape!<p>
<!--endif-->
<!--sql database select * from table where user='$username'-->
<!--ifless $numentries 1-->
Sorry, that record does not exist<p>
<!--endif exit-->
Welcome <!--$user-->!<p>
You have <!--$index:0--> credits left in your account.<p>
<!--include /text/footer.html-->
我的想法是人们发现这种模板语言非常易于使用且易于理解。随着PHP的改进和变得更像传统语言以及接收到的OOP功能,允许您使用<?php ?>
混合PHP代码和HTML标记来封装PHP代码,从而“模板化”。
因此,解释器只会评估<?php ?>
之间的代码位,将这些内容留在这些标记之外,然后将其发送给客户端。
答案 1 :(得分:0)
网页由服务器的php解释器自上而下处理。
如果那是你的整个网页,解释器将在第1行开始并处理if,然后是代码块(即开放式括号),然后php解释暂停,而大括号之间的所有内容都保存在缓冲。一旦找到第三行,处理器就会继续运行,并且可以关闭该块。
现在它拥有它需要的所有数据,它可以(如果条件为真)输出'// some code'文本(因为它实际上不是代码,它只是普通的html)或者什么都不输出。
答案 2 :(得分:0)
语法无疑是有点奇怪的,因为尽管//some code
不是PHP代码的一部分,但仍然依赖于它的流语句。
更清楚地认为?>
和<?php
不是PHP的结束和开始标记,而是混合的html /文本的开始和结束标记。
?> // some code <?php
实际上与echo "//some code";