加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

替换$in php变量声明

发布时间:2020-12-13 13:04:27 所属栏目:PHP教程 来源:网络整理
导读:我想扩展php语法,以便分辨出可变和不可变的变量. $a应声明为可变(如标准php中所示) 和#b应该声明为不可变的. 我读过Hacking PHP syntax, 我无法弄清楚在哪里可以定义用#声明的变量也应该被标记为T_VARIABLE? 我能够解决这个问题, 需要采取两个步骤: 让PHP
我想扩展php语法,以便分辨出可变和不可变的变量.

$a应声明为可变(如标准php中所示)
和#b应该声明为不可变的.

我读过Hacking PHP syntax,

我无法弄清楚在哪里可以定义用#声明的变量也应该被标记为T_VARIABLE?

我能够解决这个问题,
需要采取两个步骤:

让PHP不解析’#’作为注释:

更改:

<ST_IN_SCRIPTING>"#"|"//" {

<ST_IN_SCRIPTING>"//" {

在zend_language_scanner.l年的第1901行

Tokenize #a作为变量:

更改:

simple_variable:
T_VARIABLE { $$= $1; }
| '$' '{' expr '}' { $$= $3; }
| '$' simple_variable { $$= zend_ast_create(ZEND_AST_VAR,$2); }
;

至:

simple_variable:
T_VARIABLE { $$= $1; }
| '$' '{' expr '}' { $$= $3; }
| '$' simple_variable { $$= zend_ast_create(ZEND_AST_VAR,$2); }
| '#' '{' expr '}' { $$= $3; }
| '#' simple_variable { $$= zend_ast_create(ZEND_AST_VAR,$2); }
;

在zend_language_parser.y的第1117行

而已

现在这段代码有效:

#a=1;
echo (#a);//1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读