PHP常量
常量,即值不变的量。常量被定义后,在脚本(PHP文件)的其他任何地方都不能改变。
定义方式
PHP中使用 define() 方法来定义常量。
define(string constant_name, mixed value, case_sensitive = false);
获取常量值的方式
获取常量值有两种方式:
- 使用常量名直接获取
- 使用函数
constant() 获取
两者效果一样(都可以获取到某个已定义常量的值),但是使用函数可以 动态 输出不同的常量。
constant()函数
mixed constant(string const_name);
使用常量时,不能在常量名前添加$ 符号,不然会将常量转换成新的未定义变量使用,会导致报错。
判断常量是否定义
判断一个常量是否定义,使用函数 defined() 。
bool defined(string constant_name);
预定义常量
PHP中可以使用 预定义常量 来获取PHP中的信息。
常量名称 | 类型 | 说明 |
---|
__FILE__ | 默认常量 | 指PHP文件的名称及其所在路径 | __LINE__ | 默认常量 | 指PHP程序的行数 | __DIR__ | 默认常量 | 指PHP文件所在目录 | __CLASS__ | 类的名称(V 4.3.0) | 返回类的名称 | __FUNCION__ | 函数名称(V 4.3.0) | 返回该函数被定义时的名称 | __METHOD__ | 方法的名称(V 5.0.0) | 返回类的方法的名称 | PHP_VERSION | 内建常量 | 指当前PHP版本 | PHP_OS | 内建常量 | 指当前PHP解析器的操作系统的名称 | TRUE | | 真值(true) | FALSE | | 假值(false) | NULL | | 空值(null) | E_ERROR | | 指最近的错误之处 | E_WARNING | | 指最近的警告之处 | E_PARSE | | 指解析语法有潜在问题之处 | E_NOTICE | | 指发生不同寻常的提示,但是不一定是错误处 |
魔术常量
指的是PHP预定常量中的,以双下划线开头双下划线结尾的那几个常量,它们的值会随在脚本中的位置不同而改变。一共有8个(还有两个是__TRAIT__、__NAMESPACE__)。
echo __FILE__;
echo '<br/>';
echo __LINE__;
echo '<br/>';
echo __DIR__;
echo '<br>';
class test{
function _test(){
echo '类名为:' . __CLASS__;
echo '<br />';
echo '函数名为:' . __FUNCTION__;
echo '<br />';
echo '方法名为:' . __METHOD__;
}
}
$a = new test();
$a->_test();
调试常量
预定义常量最后那几个以E+下划线开头的常量是用来调试的,需要搭配函数 error_reporting() 来使用。 error_reporting()函数 规定报告哪个错误,该函数设置当前脚本的错误报告级别,返回旧的错误报告级别。(报告级别,即错误代号,是数字)
error_reporting(report_level);
error_reporting(0);
error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(E_ALL);
PHP变量
变量是指在程序执行过程中数值可以变化的量。变量通过一个名字(变量名)来标识的。系统为程序中的每一个变量分配一个存储单元,变量名实质上就是计算机内存单元的命名。因此,借助变量名即可访问内存中的数据。
变量声明
PHP4之后,使用变量前无需声明,只需要直接为变量赋值即可。
命名规范
PHP中的变量名,以 \$+标识符 来表示。标识符由字母、下划线、数字组成,并且不能以数字开头,且区分大小写。
$a1 = 1;
$_a1 = 1;
$A = 1;
变量赋值
变量赋值,指的是给变量赋予一个具体的数据值。有两大种赋值方法:
- 直接赋值
- 间接赋值
直接赋值
字符串和数字类型的变量的赋值,可以通过 = 来实现。
$name = 'Maccx';
间接赋值
间接赋值分为两种:
- 变量间赋值
- 引用赋值
变量间赋值
赋值之后的两个变量,使用各自的内存,互不干扰。(点两瓶百威,各喝各的)
$name_A = 'Maccx';
$name_B = $name_A;
$name_A = 'Deeing';
echo $name_A;
echo $name_B;
引用赋值
用不同的名字访问同一个变量内容,当改变其中一个变量的时候,另一个也跟着变。使用 & 符号表示引用。(点一瓶百威,两根吸管一起喝)
$a = 1;
$b = & $a;
$b = 2;
echo $a;
引用和复制的区别: 复制=>将原变量内容复制下来,开辟一个新的空间来保存。 引用=>给变量的内容再多起一个名字。(鲁迅、周树人)
变量类别
- 局部变量
- 全局变量
- 静态变量
- 可变变量
- 预定义变量
变量作用域
变量须在有效范围内使用,如果变量超出有效范围,则变量失去了其意义。(广州的羊城通不能在别的省使用,因为羊城通的有效范围就是广州。)
局部变量
在函数内部定义的变量,叫做该函数的局部变量。其作用域就是所在函数的内部。
function test(){
$num = 1000;
echo $num;
}
test();
echo "<br/>";
var_dump(isset($num));
这是因为,一般变量会在函数调用结束后即刻销毁,其存储的数据值也会被清除,所在用的空间也会被释放。
全局变量
被定义在所有函数之外的变量,其作用域是整个PHP文件(除了用户自定义的函数)。如果希望在自定义函数内部也可以使用全局变量,则要在全局变量前使用 global 关键字对变量进行声明。
$global_var = '我是全局变量';
function test1(){
echo $global_var.'<br/>';
return __FUNCTION__.'<br/>';
}
function test2(){
return __FUNCTION__.'<br/>';
}
function test3(){
return __FUNCTION__.'<br/>';
}
function use_global(){
global $global_var;
echo $global_var;
return __FUNCTION__.'<br/>';
}
use_global();
test1();
静态变量
能够在函数调用结束后保留其数据值,当再次调用函数时(回到其作用域),又可以继续使用上一次的值。
静态变量和局部变量的区别就是,局部变量在函数调用结束后立刻被销毁,静态变量则不会。
使用静态变量时,使用 static 关键字来声明。
function use_static_var(){
static $num = 0;
$n = 0;
$num++;
$n++;
return '[静态变量:'.$num.' 局部变量:'.$n.']<br/>';
}
echo use_static_var();
echo use_static_var();
echo use_static_var();
可变变量
一种独特的变量,它允许动态改变一个变量的名称。其工作原理是 该变量的名称由另一个变量的值来确定。 实现过程就是在变量前再多加一个$符号。
$a = '我是a变量';
$b = 'a';
echo $$b;
预定义变量(超级全局变量)
超级全局变量,在一个脚本的全部作用域中可用。
名称 | 说明 |
---|
$GLOBALS | $GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。 | $_SERVER | $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。 | $_REQUEST | 用于收集HTML表单提交的数据。 | $_POST | $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“post”。 | $_GET | $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“get”。$_GET 也可以收集URL中发送的数据。 |
详细的使用方法可以查阅菜鸟教程。
|