PHP命名空间中使用内置函数名的问题?

发布于 2022-09-01 21:47:45 字数 552 浏览 17 评论 0

<?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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

娜些时光,永不杰束 2022-09-08 21:47:45

请参考:
http://php.net/manual/en/tokens.php

这些都是php解释器进行解释的时候的关键词。
函数名什么的,都不能用这里面的字符。

(另外,尽量不要把函数起名成系统的函数的名字啊喂!)

演多会厌 2022-09-08 21:47:45

php有语言结构与函数之分,在命名空间出来后,函数可以在不同的命名空间中使用,但语言结构却不行。

何为语言结构,这个其实我也不太清楚,只要记住他们其实是系统的关键字就行了,常用的isset,empty,print,requrie,list,die等这些都是,所以这些都不可以再次作为函数与方法使用

自此以后,行同陌路 2022-09-08 21:47:45

你怎么能用函数名来定义函数...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文