PHP 标记

<?php ?>,这告诉 PHP 开始和停止解析二者之间的代码。

1.<?php echo 'if you want to serve XHTML or XML documents, do it like this'; ?>    
2.<script language="php">
      echo 'some editors (like FrontPage) don\'t
            like processing instructions';
  </script>
3.<? echo 'this is the simplest, an SGML processing instruction'; ?>
  <?= expression ?> This is a shortcut for "<? echo expression ?>"
4.<% echo 'You may optionally use ASP-style tags'; %>
  <%= $variable; # This is a shortcut for "<% echo . . ." %> 

上例中的 1 和 2 中总是可用的,其中示例 1 中是建议使用的。

短标记(上例 3)仅在通过 php.ini 配置文件中的指令 short_open_tag 打开后才可用,或者在 PHP 编译时加入了 --enable-short-tags 选项。

ASP 风格标记(上例 4)仅在通过 php.ini 配置文件中的指令 asp_tags 打开后才可用。

如:

<?php echo "hello" ?>

注意事项:

开始标记是:<?php[whitespace],而不是<?php

另外,如下代码:

<pre>
    my
    name
    <?php echo "is:"?>
    Oliver
</pre>

结果是:

my
name
is:        Oliver

代码如果改成:

<pre>
    my
    name
    <?php echo "is:"?> //这里的最后加上一个空格
    Oliver
</pre>

结果就是:

my
name
is: 
Oliver

从 HTML 中分离

可以使 PHP 嵌入到 HTML 文档中去,如下例所示。

<h1>this is a title in the browser</h1>
<?php echo "<p>this is another paragraph.</p>" ?>
<p>this is a paragraph</p>

上述代码的结果直接显示:

<h1>this is a title in the browser</h1>
<p>this is another paragraph.</p><p>this is a paragraph</p>

如果将代码改为:

<h1>this is a title in the browser</h1>
<?php echo "<p>this is another paragraph.</p>\r" ?>
<p>this is a paragraph</p>

结果则显示的是:

<h1>this is a title in the browser</h1>
<p>this is another paragraph.</p>
<p>this is a paragraph</p>

当 PHP 解释器碰到 ?> 结束标记时就简单地将其后内容原样输出除非马上紧接换行,例外是处于条件语句中间时,此时 PHP 解释器会根据条件判断来决定哪些输出,哪些跳过。如:

使用条件的高级分离术:

<?php if ($expression == true): ?>
  This will show if the expression is true.
<?php else: ?>
  Otherwise this will show.
<?php endif; ?> 

如:


<?php if (100 > 20): ?>
<p>bigger</p>
<?php else: ?>
<p>smaller</p>
<?php endif; ?>

上述代码的结果直接显示:

<p>bigger</p>

要输出大段文本时,跳出 PHP 解析模式通常比将文本通过 echo 或 print 输出更有效率。

又或者如下for循环代码:

<?php for ($i=0; $i < 4; $i++): ?>
<p>hello i am in the loop.</p>
<?php endfor; ?>

结果则显示的是:

<p>hello i am in the loop.</p>
<p>hello i am in the loop.</p>
<p>hello i am in the loop.</p>
<p>hello i am in the loop.</p>

如foreach循环代码:

<?php $arr = array(1,2,3,4,5,6); ?>
<?php foreach ($arr as $i): ?>
    <?php echo $i ?>
    <p>hello</p>
<?php endforeach ?>

结果则显示的是:

1    <p>hello</p>
2    <p>hello</p>
3    <p>hello</p>
4    <p>hello</p>
5    <p>hello</p>
6    <p>hello</p>

又如while循环语句:

<?php $i=0 ?>
<?php while ($i < 10): ?>
<?php echo $i; ?>
<p>in the loop.</p>
<?php $i++ ?>
<?php endwhile; ?>

结果则显示的是:

0<p>in the loop.</p>
1<p>in the loop.</p>
2<p>in the loop.</p>
3<p>in the loop.</p>
4<p>in the loop.</p>
5<p>in the loop.</p>
6<p>in the loop.</p>
7<p>in the loop.</p>
8<p>in the loop.</p>
9<p>in the loop.</p>

指令分隔符

PHP 需要在每个语句后用分号结束指令。

<?php echo "hello"; ?> //加上分号
<?php echo "hello" ?>

文件末尾的 PHP 代码段结束标记可以不要

有些情况下当使用 include 或者 require 时省略掉会更好些

注释

注释风格如下:

<?php 
    echo "testing area."; //the one-line c++ style comment
    /* multi line comment
    multi line comment.*/
    echo "Testing."; #another one-line shell-style comment
 ?>

C 风格的注释在碰到第一个 */ 时结束。要确保不要嵌套 C 风格的注释。试图注释掉一大块代码时很容易出现该错误。

<?php
    /*
        echo "This is a test"; /* This comment will cause a problem */
    */
?> 

另外,使用如下代码可以方便其他人阅读(J.Prettyman):

<?php

//======================================================================
 // CATEGORY LARGE FONT
 //======================================================================

 //-----------------------------------------------------
 // Sub-Category Smaller Font
 //-----------------------------------------------------

 /* Title Here Notice the First Letters are Capitalized */

 # Option 1
 # Option 2
 # Option 3

 /*
  *This is a detailed explanation
  *of something that should require
  *several paragraphs of information.
  */
  
 // This is a single line quote.
?> 

此外,不要对php代码部分使用html注释格式(<!---->):

<!--     
<?php echo blablabla result(); ?>
 -->

这样的做法是不正确的。


JS菌
6.4k 声望2k 粉丝