手记

复习PHP-语言参考-常量

1.常量是一个简单值的标识符,在脚本执行期间不可修改,全部大写命名是个好习惯。

2.语法

一般用define定义,defined判断是否存在

5.3以后可以用const定义(const一般用于类内部属性的定义)

常量只能包含标量数据(int,bool,string,float)

当无法确定常量名称时可用constant()获取

如:

<?php

class a  
{    
    const b = "test";    
}    
$a = 'b';    
echo constant("a::".$a);

?>

注意:居然可以设定空字符串为常量(这是BUG吗)

注意:在添加命名空间后,define和const的访问形式将会不一样

如:

<?php    
namespace sub;    
define("ABC","DEF");    
const DEF="abc";    
class foo {    
    const BAR = 'Hello World';    
}    
constant('ABC'); // works    
//constant('sub\ABC'); // not works    
//constant('DEF'); // not works    
constant('sub\DEF'); // works    
//constant('foo::BAR'); // not works    
constant('sub\foo::BAR'); // works    
?>

所以由此可证明:define出来的常量是全局的,而const出来的常量是局部的,这就是它们之间的区别。

get_defined_constants可获取所有常量组成的数组

3.魔术常量

大量魔术常量是随着扩展库而定义的,下面列举一些随代码位置改变而改变的常量:

__LINE__:文件中的当前行号

__FILE__:文件的完整路径(如果用在被包含的文件中,则显示被包含的文件名)

__DIR__:文件所在目录(如果用在被包含的文件中,则显示被包含的目录),等价于dirname(__FILE__),这两个都可以用于绝对路径的判断依据

__FUNCTION__:返回该函数的名称

__CLASS__:返回该类的名称

__TRAIT__:返回Trait的名称(Trait是新的一种继承类似类,目前感觉还没有什么大用处)

__METHOD:返回类的方法名(与__FUNCTION__的区别在于他的形式是类名::方法名)

__NAMESPACE__:返回当前命名空间的名称

扩展:get_class可以返回对象的类名

0人推荐
随时随地看视频
慕课网APP