PHP命名空间中使用内置函数名的问题?
<?php
namespace MyProject;
function addcslashes(){
echo 'work';
}
addcslashes(); //echo work
<?php
namespace MyProject;
function empty(){
echo 'work';
}
empty(); //Parse error</b>: syntax error, unexpected 'empty' (T_EMPTY), expecting identifier (T_STRING) or '(' in namespace.php on line 4
如上,使用某些内置函数名(如empty,isset,print)会报syntax error,而某些内置函数名却没有问题(如addcslashes,mysql_select_db,explode)
请问这是什么原因?又该该如何规避?希望大神能解答,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
请参考:
http://php.net/manual/en/tokens.php
这些都是php解释器进行解释的时候的关键词。
函数名什么的,都不能用这里面的字符。
(另外,尽量不要把函数起名成系统的函数的名字啊喂!)
php有语言结构与函数之分,在命名空间出来后,函数可以在不同的命名空间中使用,但语言结构却不行。
何为语言结构,这个其实我也不太清楚,只要记住他们其实是系统的关键字就行了,常用的isset,empty,print,requrie,list,die等这些都是,所以这些都不可以再次作为函数与方法使用
你怎么能用函数名来定义函数...