php 别名,关于php中的“别名”

"AND" {

return T_LOGICAL_AND;

}

一个叫布尔"与",一个叫逻辑"与"

之所以使用不同的token。那必然有不同之处。这里我也不卖关子了,google能找到很多答案,其实这两个最实质的区别就是优先级不同:

$a = 1 && 0;

$b = 1 AND 0;

var_dump($a);

var_dump($b);

前者会尝试先计算1 && 0,得到结果后再赋给$a,后者会先将1赋给$b;所以结果为

bool(false) int(1)

这下大家应该清楚这里的细节了。用的时候需要注意下。

刚才说的都是语言结构的“别名”,那么php中的函数别名是如何处理的呢?

拿implode和join举例:

basic_function.c中,可以找到如下一行:

PHP_FALIAS(join, implode, arginfo_implode)

那么很明显了,是PHP_FAILIAS这个宏起的作用。下面还能找到许多,比如ini_set和ini_alter也是别名关系。想深究下去,就一路去追这个宏吧。

php.h中

#define PHP_FALIAS ZEND_FALIAS

发现PHP_FALIAS又指向ZEND_FALIAS

zend_API.h中

#define ZEND_FALIAS(name, alias, arg_info) ZEND_FENTRY(name, ZEND_FN(alias), arg_info, 0)

...

#define ZEND_FENTRY(zend_name, name, arg_info, flags) { #zend_name, name, arg_info, (zend_uint) (sizeof(arg_info)/sizeof(struct _zend_arg_info)-1), flags },

再往下就是函数初始化之类的工作了,我们也知道别名函数也知道大概是怎么回事了。

回复讨论(解决方案)

学习了,一般习惯用exit;

涨见识了

学习

今天看一个app上的笑话

也是讲的php exit与die

举的是生孩子的例子.............................

首先,别名这个问题长见识了。

另外 && 和 and 我只知道,当使用 条件1 && 条件2 的时候,如果条件1为false,那么条件2就不会执行,and则会计算2个,今天算是知道本质原因了。

学习了......

首先,别名这个问题长见识了。

另外 && 和 and 我只知道,当使用 条件1 && 条件2 的时候,如果条件1为false,那么条件2就不会执行,and则会计算2个,今天算是知道本质原因了。

不是的

无论是&&还是AND,当左边表达式计算结果为false后都不会再计算右边表达式

$i = 0;

1>2 && $i = 1;

echo $i;

-----------------

$i = 0;

1>2 AND $i = 1;

echo $i;

这两段代码结果都是0。这个例子可以说明这个问题,在这个断言问题上,&&与AND是一样的。

同样

1<2 || $i = 1;和1<2 OR $i = 1;这里的效果也是一样。

&&和AND的区别是,&&比=的优先级高,而AND的优先级比=低,所以:

$a = 1 && 0;

可以理解为:

$a = (1 && 0);

$b = 1 AND 0;

可以理解为:

($b = 1) AND 0;

引用 5 楼 none01 的回复:首先,别名这个问题长见识了。

另外 && 和 and 我只知道,当使用 条件1 && 条件2 的时候,如果条件1为false,那么条件2就不会执行,and则会计算2个,今天算是知道本质原因了。

不是的

无论是&&还是AND,当左边表达式计算结果…… 看来我是一直有误解啊,多谢仁兄的耐心解释。

xie xie

谢 谢

第一次见token_get_all()这个函数

学知识

来了

学习了...

其实了解了这里php如何处理的别名问题,我们甚至可以自定义php的语法,自己添加新语言结构作为其他语句的别名了。

只需要zend_language_scanner.l中,在

"exit" {

return T_EXIT;

}

"die" {

return T_EXIT;

}

下面,增加

"stop" {

return T_EXIT;

}

重新编译,恭喜你又多了stop语句可以用。因为只是作为其他语言结构的别名,返回的仍然是现有token,并没有增加新的,所以不需要做任何后续处理。stop语句的效果和exit、die完全一样,纯粹的别名关系。

当然如果你需要增加一个新功能的php语言结构,那也需要增加新的token,并且增加对新token的处理逻辑。就不止改这么一个地方那么简单了。

太感谢楼主了!像这样的技术帖子确实不常见到。

我一直用die,有天我问我同学用过没,他说他exit,我愣了好久才想起是别名···

真是受用啊!!

技术帖,

受用!

牛人!!!!!!

平时用的都到不是很多!理解也不是很清楚,这么一看,啊,原来是这样的!

这些可以写博客上啊

来学习了,受教了,谢谢楼主花时间整理。

学习了

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值