为了账号安全,请及时绑定邮箱和手机立即绑定

复习PHP-语言参考-常量

标签:
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可以返回对象的类名

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消