使用PHP包装标签(<;?PHP?>;)


Using PHP Wrapper Tags (<?php ?>)

来自C++/C/C#,标签的使用一直困扰着我。在php文件中编写php脚本时,标签是否必须围绕EVERYTHING,或者这些标签之外是否有任何特殊的语法?此外,同一个文件中是否可以有多组标记(即使这违反了惯例(。

PHP被设计为嵌入到网页中。因此,它的工作方式是简单地将输入文件复制到输出,直到遇到<?php标记。其中的任何内容都作为PHP代码执行。当它看到?>时,它返回到复制模式。因此,所有可执行代码都必须在<?php ?>内部,逐字逐句的文本也可以在它外部

来自C,只需将标签之外的所有内容视为一个大的printf()语句即可。

是的,标签应该位于PHP代码的每个块周围。有多种方法可以做到这一点,其中一种方法是用PHP编写整个文件,例如

<?php
    $var = "my text";
    echo '<html>';
        echo '<head>';
        echo '</head>';
        echo '<body>';
            echo '<p>' . $var . '</p>';
        echo '</body>';
    echo '</html>';
?>

另一种方法是全行

<html>
    <head>
    </head>
    <body>
        <p><?php $var = "my text"; echo $var; ?></p>
    </body>
</html>

据我所知,并没有一个真正的首选约定,许多人会根据需要多少php来做其中一个或另一个,或者两者都做。这些信息是您在ANYphp教程网站上真正能找到的,并不适合StackOverflow。

但是,关于是否所有php都需要在<?php ?>标记中的问题,答案是肯定的,这就是服务器在将文件发送到请求之前知道在哪里计算代码的方式。

编辑:php还将在标记关闭后跟踪值。在面向C的程序中,一个标记块的工作方式与花括号不同,因此在以下情况下:

<?php
    $var = "text"
?>
...
<?php
    echo $var;
?>

则输出仍然是CCD_ 6。

这也适用于php中的函数,因此如果您有

<?php
    function myFunction(){
        $var = "text";
        ?>
        <li>
        <?php
        echo $var;
    }
?>

它不会因为关闭了标记而脱离函数。