Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 05cd670d8a02b2b4a0ffb1756f2e8308 > files > 11963

php-manual-zh-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>常量</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="PHP 手册"
HREF="index.html"><LINK
REL="UP"
TITLE="语言参考"
HREF="langref.html"><LINK
REL="PREVIOUS"
TITLE="来自 PHP 之外的变量"
HREF="language.variables.external.html"><LINK
REL="NEXT"
TITLE="魔术常量"
HREF="language.constants.predefined.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="chapter"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>PHP 手册</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="language.variables.external.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="language.constants.predefined.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="chapter"
><H1
><A
NAME="language.constants"
>章 13. 常量</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>目录</B
></DT
><DT
><A
HREF="language.constants.html#language.constants.syntax"
>语法</A
></DT
><DT
><A
HREF="language.constants.predefined.html"
>魔术常量</A
></DT
></DL
></DIV
><P
>&#13;   常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的<A
HREF="language.constants.predefined.html"
>魔术常量</A
>,它们其实不是常量)。常量默认为大小写敏感。按照惯例常量标识符总是大写的。
  </P
><P
>&#13;   常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。用正则表达式是这样表达的:<TT
CLASS="literal"
>[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*</TT
>
  </P
><P
>&#13;   <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN3900"
></A
><P
><B
>例 13-1. 合法与非法的常量名</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /><br /></font><font color="#FF8000">// 合法的常量名<br /></font><font color="#0000BB">define</font><font color="#007700">(</font><font color="#DD0000">"FOO"</font><font color="#007700">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"something"</font><font color="#007700">);<br /></font><font color="#0000BB">define</font><font color="#007700">(</font><font color="#DD0000">"FOO2"</font><font color="#007700">,&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"something else"</font><font color="#007700">);<br /></font><font color="#0000BB">define</font><font color="#007700">(</font><font color="#DD0000">"FOO_BAR"</font><font color="#007700">, </font><font color="#DD0000">"something more"</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// 非法的常量名<br /></font><font color="#0000BB">define</font><font color="#007700">(</font><font color="#DD0000">"2FOO"</font><font color="#007700">,&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"something"</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// This is valid, but should be avoided:<br />// PHP may one day provide a magical constant<br />// that will break your script<br /></font><font color="#0000BB">define</font><font color="#007700">(</font><font color="#DD0000">"__FOO__"</font><font color="#007700">, </font><font color="#DD0000">"something"</font><font color="#007700">);<br /><br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
  </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
    在这里,字母是 a-z,A-Z,以及从 127 到 255(0x7f-0xff)的 ASCII 字符。
   </P
></BLOCKQUOTE
></DIV
><P
>&#13;   和 <A
HREF="language.variables.predefined.html"
>superglobals</A
> 一样,常量的范围是全局的。不用管作用域就可以在脚本的任何地方访问常量。有关作用得更多信息请阅读手册中的<A
HREF="language.variables.scope.html"
>变量范围</A
>。
  </P
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="language.constants.syntax"
>语法</A
></H1
><P
>&#13;    可以用 <A
HREF="function.define.html"
><B
CLASS="function"
>define()</B
></A
> 函数来定义常量。一个常量一旦被定义,就不能再改变或者取消定义。
   </P
><P
>&#13;    常量只能包含标量数据(<A
HREF="language.types.boolean.html"
><B
CLASS="type"
>boolean</B
></A
>,<A
HREF="language.types.integer.html"
><B
CLASS="type"
>integer</B
></A
>,<A
HREF="language.types.float.html"
><B
CLASS="type"
>float</B
></A
> 和 <A
HREF="language.types.string.html"
><B
CLASS="type"
>string</B
></A
>)。
    不要定义 <A
HREF="language.types.resource.html"
><B
CLASS="type"
>resource</B
></A
> 常量。
   </P
><P
>&#13;    可以简单的通过指定其名字来取得常量的值,<SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>不要</I
></SPAN
>在常量前面加上 <TT
CLASS="literal"
>$</TT
> 符号。如果常量名是动态的,也可以用函数 <A
HREF="function.constant.html"
><B
CLASS="function"
>constant()</B
></A
> 来读取常量的值。用 <A
HREF="function.get-defined-constants.html"
><B
CLASS="function"
>get_defined_constants()</B
></A
> 可以获得所有已定义的常量列表。
   </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
     常量和(全局)变量在不同的名字空间中。这意味着例如 <TT
CLASS="constant"
><B
>TRUE</B
></TT
> 和 <CODE
CLASS="varname"
>$TRUE</CODE
> 是不同的。
    </P
></BLOCKQUOTE
></DIV
><P
>&#13;    如果使用了一个未定义的常量,PHP
    假定想要的是该常量本身的名字,如同用字符串调用它一样(CONSTANT 对应
    "CONSTANT")。此时将发出一个 <A
HREF="ref.errorfunc.html"
>E_NOTICE</A
>
    级的错误。参见手册中为什么
    <A
HREF="language.types.array.html#language.types.array.foo-bar"
>$foo[bar]</A
>
    是错误的(除非事先用 <A
HREF="function.define.html"
><B
CLASS="function"
>define()</B
></A
> 将 <TT
CLASS="literal"
>bar</TT
>
    定义为一个常量)。如果只想检查是否定义了某常量,用 <A
HREF="function.defined.html"
><B
CLASS="function"
>defined()</B
></A
> 函数。
   </P
><P
>&#13;    常量和变量不同:
    <P
></P
><UL
><LI
><P
>&#13;       常量前面没有美元符号(<TT
CLASS="literal"
>$</TT
>);
      </P
></LI
><LI
><P
>&#13;       常量只能用 <A
HREF="function.define.html"
><B
CLASS="function"
>define()</B
></A
> 函数定义,而不能通过赋值语句;
      </P
></LI
><LI
><P
>&#13;       常量可以不用理会变量范围的规则而在任何地方定义和访问;
      </P
></LI
><LI
><P
>&#13;       常量一旦定义就不能被重新定义或者取消定义;
      </P
></LI
><LI
><P
>&#13;       常量的值只能是标量。
       </P
></LI
></UL
>
   </P
><P
>&#13;    <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN3948"
></A
><P
><B
>例 13-2. 定义常量</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br />define</font><font color="#007700">(</font><font color="#DD0000">"CONSTANT"</font><font color="#007700">, </font><font color="#DD0000">"Hello world."</font><font color="#007700">);<br />echo </font><font color="#0000BB">CONSTANT</font><font color="#007700">; </font><font color="#FF8000">// outputs "Hello world."<br /></font><font color="#007700">echo </font><font color="#0000BB">Constant</font><font color="#007700">; </font><font color="#FF8000">// outputs "Constant" and issues a notice.<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
   </P
><P
>&#13;    参见<A
HREF="language.oop5.constants.html"
>类常量</A
>。
   </P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="language.variables.external.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>起始页</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="language.constants.predefined.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>来自 PHP 之外的变量</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="langref.html"
ACCESSKEY="U"
>上一级</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>魔术常量</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>