站长论坛

标题: PHP 常量类型 [打印本页]

作者: tzlink    时间: 2007-9-30 14:25
标题: PHP 常量类型
PHP 在常量中定义了以下一些常量。

__FILE__
这个默认常量是 PHP 程序文件名。若引用文件 (include 或 require)则在引用文件内的该常量为引用文件名,而不是引用它的文件名。

__LINE__
这个默认常量是 PHP 程序行数。若引用文件 (include 或 require)则在引用文件内的该常量为引用文件的行,而不是引用它的文件行。

PHP_VERSION
这个内建常量是 PHP 程序的版本,如 '3.0.8-dev'。

PHP_OS
这个内建常量指执行 PHP 解析器的操作系统名称,如 'Linux'。

TRUE
这个常量就是真值 (true)。

FALSE
这个常量就是伪值 (false)。

E_ERROR
这个常量指到最近的错误处。

E_WARNING
这个常量指到最近的警告处。

E_PARSE
本常式为解析语法有潜在问题处。

E_NOTICE
这个常式为发生不寻常但不一定是错误处。例如存取一个不存在的变量。

这些 E_ 开头形式的常量,可以参考 error_reporting() 函数,有更多的相关说明。

当然在程序写作时,以上的默认常量是不够用。define() 的功能可以让我们自行定义所需要的常量。见下例

<?php
define("COPYRIGHT", "Copyright &copy; 2000, http://www.ddvip.net");
echo COPYRIGHT;  
?>
作者: tzlink    时间: 2007-9-30 14:25
常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。常量默认为大小写敏感。按照惯例常量标识符总是大写的。

常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。用正则表达式是这样表达的:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

注: 在这里,字母是 a-z,A-Z,以及从 127 到 255(0x7f-0xff)的 ASCII 字符。

和 superglobals 一样,常量的范围是全局的。不用管作用域就可以在脚本的任何地方访问常量。有关作用得更多信息请阅读手册中的变量范围。

语法
可以用 define() 函数来定义常量。一个常量一旦被定义,就不能再改变或者取消定义。

常量只能包含标量数据(boolean,integer,float 和 string)。

可以简单的通过指定其名字来取得常量的值,不要在常量前面加上 $ 符号。如果常量名是动态的,也可以用函数 constant() 来读取常量的值。用 get_defined_constants() 可以获得所有已定义的常量列表。

注: 常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。

如果使用了一个未定义的常量,PHP 假定你想要的是该常量本身的名字,如同你用字符串调用它一样(CONSTANT 对应 "CONSTANT")。此时将发出一个 E_NOTICE 级的错误。参见手册中为什么 $foo[bar] 是错误的(除非你事先用 define() 将 bar 定义为一个常量)。如果你只想检查是否定义了某常量,用 defined() 函数。

常量和变量不同:


常量前面没有美元符号($);

常量只能用 define() 函数定义,而不能通过赋值语句;

常量可以不用理会变量范围的规则而在任何地方定义和访问;

常量一旦定义就不能被重新定义或者取消定义;

常量的值只能是标量。


例子 13-1. 定义常量

<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>  








add a note User Contributed Notes
常量
tom dot harris at home dot com

To get a full path (the equivalent of something like "__PATH__") use
dirname($SCRIPT_FILENAME)
to get the directory name of the called script and
dirname(__FILE__)
to get the directory name of the include file.

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Define a case-insensitive constant:

<?php
define("GREETING","Hello you! How are you today?",TRUE);
echo constant("greeting");
?>

The output of the code above will be:

Hello you! How are you today?
作者: tzlink    时间: 2007-9-30 14:26
PHP常量使用技巧

对PHP常量的定义、更改和动态显示用法归纳下
//定义当前时间常量

define('CURRENT_TIME', time());

//定义的常量不区分大小写

define('CURRENT_TIME', time(), true);

//判断常量是否已经定义

if (!defined('CURRENT_time')) {

    define('CURRENT_TIME', time());

}
作者: tzlink    时间: 2007-9-30 14:27
几个有用的预定义常量和魔术常量

几个在PHP开发中经常会用到的常量
1 : //魔术常量
2 : __LINE__ //文件中的当前行号(包含注释行)
3 : __FILE__ //文件的完整路径和文件名
4 : __FUNCTION__ //当前所在的函数名称(PHP 4.3.0 新增)
5 : __CLASS__ //当前所在的类的名称( PHP 4.3.0 新增)
6 : __METHOD__ //当前所在的类的方法名( PHP 5.0.0 新增)
7 : //内核预定义常量
8 : PHP_VERSION //PHP版本信息和phpversion()结果相同
9 : PHP_OS //操作系统信息




欢迎光临 站长论坛 (http://www.tzlink.com/bbs/) Powered by Discuz! X3.2