<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/langref.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'zh',
  ),
  'this' => 
  array (
    0 => 'language.constants.php',
    1 => '常量',
    2 => '常量',
  ),
  'up' => 
  array (
    0 => 'langref.php',
    1 => '语言参考',
  ),
  'prev' => 
  array (
    0 => 'language.variables.external.php',
    1 => '来自 PHP 之外的变量',
  ),
  'next' => 
  array (
    0 => 'language.constants.syntax.php',
    1 => '语法',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'zh',
    'path' => 'language/constants.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/language.constants.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.constants" class="chapter">
  <h1 class="title">常量</h1>
<h2>目录</h2><ul class="chunklist chunklist_chapter"><li><a href="language.constants.syntax.php">语法</a></li><li><a href="language.constants.predefined.php">预定义常量</a></li><li><a href="language.constants.magic.php">魔术常量</a></li></ul>


  <p class="simpara">
   常量是一个简单值的标识符（名字）。如同其名称所暗示的，在脚本执行期间该值不能改变（除了所谓的
   <a href="language.constants.magic.php" class="link">魔术常量</a>，它们其实不是常量）。常量大小写敏感。传统上常量标识符总是大写的。
  </p>

  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <p class="para">
    在 PHP 8.0.0 之前，使用 <span class="function"><a href="function.define.php" class="function">define()</a></span> 定义的常量可能不区分大小写。
   </p>
  </p></blockquote>

 <p class="para">
   常量名和其它任何 PHP
   标签遵循同样的命名规则。合法的常量名以字母或下划线开始，后面跟着任何字母，数字或下划线。用正则表达式是这样表达的：
   <code class="code">^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$</code>。
  </p>
  <p class="para">
   还可以使用 <span class="function"><a href="function.define.php" class="function">define()</a></span> 函数来定义包含保留字或非常规名称的常量，这类常量可以通过
   <span class="function"><a href="function.constant.php" class="function">constant()</a></span> 函数来获取名称，但是非常不推荐这种用法。
  </p>
  <div class="tip"><strong class="tip">小技巧</strong><p class="simpara">请参见<a href="userlandnaming.php" class="xref">用户空间命名指南</a>。</p></div>  
  <p class="para">
   
   <div class="example" id="example-1">
    <p><strong>示例 #1 合法与非法的常量名</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">// 合法的常量名<br /></span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">"FOO"</span><span style="color: #007700">,     </span><span style="color: #DD0000">"something"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">"FOO2"</span><span style="color: #007700">,    </span><span style="color: #DD0000">"something else"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">"FOO_BAR"</span><span style="color: #007700">, </span><span style="color: #DD0000">"something more"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// 非法的常量名<br /></span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">"2FOO"</span><span style="color: #007700">,    </span><span style="color: #DD0000">"something"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// 下面的定义是合法的，但应该避免这样做：(自定义常量不要以__开头)<br />// 也许将来有一天 PHP 会定义一个 __FOO__ 的魔术常量<br />// 这样就会与你的代码相冲突<br /></span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">"__FOO__"</span><span style="color: #007700">, </span><span style="color: #DD0000">"something"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>

  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <span class="simpara">
    在这里，字母指的是 a-z，A-Z，以及从 128 到 255（0x80-0xff）的 ASCII 字符。
   </span>
  </p></blockquote>

  <p class="simpara">
   和 <a href="language.variables.predefined.php" class="link">superglobals</a> 一样，常量的范围是全局的。常量可以从脚本的任何地方被访问，而不考虑作用域。有关作用域的更多信息请阅读手册中的<a href="language.variables.scope.php" class="link">变量范围</a>。
  </p>

  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <span class="simpara">
    从 PHP 7.1.0 开始，类常量可以声明为 protected 或 private 的可见性，
    使其只在其定义的类的层次范围内可用。
   </span>
  </p></blockquote>

 

  

 
 </div>
<?php manual_footer($setup); ?>