php - 深夜遇到一个语法问题,无语了。
为情所困
为情所困 2017-05-16 13:02:31
[PHP讨论组]



const Administration    = 0x1 << 1;

代码就是这一句 使用const 定义了一个常量,常量中使用位移符号而已,在win系统没有任何问题呢,在ubuntu系统就报语法错误呢!
为情所困
为情所困

全部回复(2)
伊谢尔伦

这并不是php的问题,十有八九是你编辑器的问题。

<?php

class Privilege{
        const Administration = 0x1 << 1;
}

$a = new Privilege();
echo $a::Administration;

在centos和mac尚(都是php7),输出结果都是2,没有问题

php版本的问题。

changelog在这里:

http://php.net/manual/zh/migr...

5.6引入的新功能:

使用表达式定义常量

在之前的 PHP 版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认值。 现在你可以使用包括数值、字符串字面量以及其他常量在内的数值表达式来 定义常量、声明属性以及设置函数参数默认值。

5.6之前必须用静态值,5.6之后支持常量用运算定义

迷茫

个人认为出现这个错误的原因是线上的PHP版本的低于5.6引起。PHP5.6以前,常量的右值只能是直接量和静态值,不能是表达式。只有php5.6起,才开始支持表达式作为常量的右值。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号