常量
- 在脚本中无法改变该值。
- 常量名称前面没有 $ 符号
- 常量贯穿整个脚本是自动全局的。
1. 常量设置
define方法设定值
define ( string $name , mixed $value [, bool $case_insensitive = false ] )
三个参数:
- 常量的名称
- 常量的值
- 第三个参数常量名是否对大小写敏感。默认是 false。(可选的)
eg:
<?php
define("GREETING", "Welcome to W3School.com.cn!", true);
echo greeting;
?>
const关键字设定值
php5.3以后添加的关键字,用来设定类常量和普通常量。
const CA="const";
define与const的区别
- define()可以在函数内、循环内、if语句内等函数能够被调用的任何地方使用.const定义常量必须处于最顶端的作用区域,不能在函数内、循环内以及if语句之内用const来定义常量.
const关键字定义的常量值的表达式中不支持算术运算符、位运算符、比较运算符等多种运算符,而这些运算符在define()函数定义常量时都是可以直接使用的。
define可以设置大小敏感
const可以定义类常量,也可以定义普通常量。类常量只能通过类名来引用。
2. 常量值读取
a.使用常量名直接获取值
b.使用constant()函数
mixed constant ( string $name )
参数
name 常量名。
返回值
返回常量的值。如果常量未定义则返回 NULL。
2. 已定义常量列表获取
array get_defined_constants ([ bool $categorize = false ] )
函数返回一个多维数组,分类为第一维的键名,常量和它们的值位于第二维。 根据系统定义的情况,返回值也会不同。
返回值结构
Array
(
[Core] => Array
(
[E_ERROR] => 1
[E_WARNING] => 2
[E_PARSE] => 4
[E_NOTICE] => 8
[E_CORE_ERROR] => 16
[E_CORE_WARNING] => 32
[E_COMPILE_ERROR] => 64
[E_COMPILE_WARNING] => 128
[E_USER_ERROR] => 256
[E_USER_WARNING] => 512
[E_USER_NOTICE] => 1024
[E_ALL] => 2047
[TRUE] => 1
)
[pcre] => Array
(
[PREG_PATTERN_ORDER] => 1
[PREG_SET_ORDER] => 2
[PREG_OFFSET_CAPTURE] => 256
[PREG_SPLIT_NO_EMPTY] => 1
[PREG_SPLIT_DELIM_CAPTURE] => 2
[PREG_SPLIT_OFFSET_CAPTURE] => 4
[PREG_GREP_INVERT] => 1
)
[user] => Array
(
[MY_CONSTANT] => 1
)
)
常见的的键名
Array
(
[0] => Core
[1] => calendar
[2] => date
[3] => filter
[4] => ftp
[5] => hash
[6] => iconv
[7] => json
[8] => mcrypt
[9] => odbc
[10] => pcre
[11] => session
[12] => standard
[13] => tokenizer
[14] => zlib
[15] => libxml
[16] => dom
[17] => xml
[18] => openssl
[19] => curl
[20] => mbstring
[21] => exif
[22] => gd
[23] => mysql
[24] => mysqli
[25] => soap
[26] => sockets
[27] => sqlite3
[28] => xsl
[29] => user
)
类常量
魔术常量
魔术指的是它的值可变,常量指的是它可以全局应用,且不需要加到$.
几个 PHP 的"魔术常量" 名称 说明
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。
__CLASS__ 类的名称(PHP 4.3.0 新加)。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
class TAction extends Action{
//put your code here
function a() {
p(__DIR__);
p(__FILE__);
p(__CLASS__);
p(__METHOD__);
p(__FUNCTION__);
p(__LINE__);
p(__NAMESPACE__);
p(__TRAIT__);
}
}
//输出:
E:\workspace\PHPProject\zsgj\Index\Lib\Action\Service
E:\workspace\PHPProject\zsgj\Index\Lib\Action\Service\TAction.class.php
TAction
TAction::a
a
22