Php 名为'的Codeigniter函数;新';

Php 名为'的Codeigniter函数;新';,php,codeigniter,keyword,reserved-words,Php,Codeigniter,Keyword,Reserved Words,为什么不能在控制器(可能还有其他地方)中将Codeigniter函数命名为“new” 错误结果: 分析错误:语法错误,意外的'new'(T_new),需要标识符(T_字符串) 您不仅可以在Codeigniter中这样做,而且在您编写的所有PHP中,它都应该抛出一个错误new是PHP中的保留字。您可以在PHP中找到有关保留字的更多信息 人们通常会在函数名前加一个下划线(\uu)来克服这个问题 function _new() { echo "Hello!"; } 您不仅可以在Codeig

为什么不能在控制器(可能还有其他地方)中将Codeigniter函数命名为“new”

错误结果:

分析错误:语法错误,意外的'new'(T_new),需要标识符(T_字符串)


您不仅可以在
Codeigniter
中这样做,而且在您编写的所有PHP中,它都应该
抛出一个错误
new
PHP
中的保留字。您可以在
PHP
中找到有关保留字的更多信息

人们通常会在函数名前加一个下划线(
\uu
)来克服这个问题

function _new() 
{
    echo "Hello!";
}

您不仅可以在
Codeigniter
中这样做,而且在您编写的所有PHP中,它都应该
抛出一个错误
new
PHP
中的保留字。您可以在
PHP
中找到有关保留字的更多信息

人们通常会在函数名前加一个下划线(
\uu
)来克服这个问题

function _new() 
{
    echo "Hello!";
}

new
是PHP中的保留关键字

阅读更多关于它的文章


new
是PHP中的保留关键字

阅读更多关于它的文章


对于那些说你做不到的人,我说我可以。有人要吗

$test = new Test();
$test->new();

class test{

    public function __call($method, $args){
        if( $method == 'new' ){
            echo 'Hello World';
        }else{
            trigger_error('Call to undefined method '.__CLASS__.'::'.$method,E_USER_ERROR);
        }
    }
}
魔法

尽管我应该注意到Codeigniter的Router类可能不会找到这样定义的方法。所以这并不是一个真正的解决方案。但正如其他人提到的,它是PHP语言本身的一个关键字(或构造)

就个人而言,我可以理解限制新对象的使用,但是
empty()
总是让我有点生气

分析错误:语法错误,意外的“空”(T\u empty),需要标识符(T\u字符串)

他们应该真正解决的问题,以及包括、要求等。。完全不同的背景

CI范围的更新

私人功能

在某些情况下,您可能希望对公众隐藏某些功能 通道要使函数私有,只需添加下划线作为 名称前缀,它将不会通过URL请求提供。例如 如果你有一个功能

尝试通过URL访问它(如下所示)将不起作用:


我之所以提到这一点,是因为OP声明对那些说你做不到的人使用CI,我说我可以。有人要吗

$test = new Test();
$test->new();

class test{

    public function __call($method, $args){
        if( $method == 'new' ){
            echo 'Hello World';
        }else{
            trigger_error('Call to undefined method '.__CLASS__.'::'.$method,E_USER_ERROR);
        }
    }
}
魔法

尽管我应该注意到Codeigniter的Router类可能不会找到这样定义的方法。所以这并不是一个真正的解决方案。但正如其他人提到的,它是PHP语言本身的一个关键字(或构造)

就个人而言,我可以理解限制新对象的使用,但是
empty()
总是让我有点生气

分析错误:语法错误,意外的“空”(T\u empty),需要标识符(T\u字符串)

他们应该真正解决的问题,以及包括、要求等。。完全不同的背景

CI范围的更新

私人功能

在某些情况下,您可能希望对公众隐藏某些功能 通道要使函数私有,只需添加下划线作为 名称前缀,它将不会通过URL请求提供。例如 如果你有一个功能

尝试通过URL访问它(如下所示)将不起作用:



我之所以提到这一点,是因为OP声明使用CI是可能的。可能的。我会说ppl通常把
\uuucode>放在私有方法前面。@ArtisiticPhoenix啊,我想这是自以为是/个人偏好?在我提供的场景中,我确实看到了这一点,但我们中的任何一方都可能是对的,甚至两方都是对的。实际上,我认为在CI中,当使用
\uu
时,它将它们视为不可访问的,或者它可能是我的自定义路由器,我记不起是否以这种方式设置它,或者它是否是CI的一部分。更新了我的答案CI考虑了以下划线private开头的方法请注意,我试图变得刻薄,我使用CI。还记得那个小怪癖,所以我只是想让OP知道。至于个人偏好,这是Zend(和其他)PHP编码标准的一部分,也就是说,这是一个个人偏好的问题,但也有一点更深。我想ppl通常会把
\uuu
放在私人方法前面。@ArtisiticPhoenix啊,我想这是自以为是/个人偏好?在我提供的场景中,我确实看到了这一点,但我们中的任何一方都可能是对的,甚至两方都是对的。实际上,我认为在CI中,当使用
\uu
时,它将它们视为不可访问的,或者它可能是我的自定义路由器,我记不起是否以这种方式设置它,或者它是否是CI的一部分。更新了我的答案CI考虑了以下划线private开头的方法请注意,我试图变得刻薄,我使用CI。还记得那个小怪癖,所以我只是想让OP知道。至于个人偏好,这是Zend(和其他)PHP编码标准的一部分,也就是说,这是个人偏好的问题,但也有一点更深。很好的解决方法。我太拘泥于Codeigniter的方式了,我甚至都没有想到在传统的OOP意义上使用新的。@pmm4654-你看到我关于CI的说明了吗scoping@artisticphoenix刚刚看到!在codeigniter@pmm4654中,我经常在私有函数中使用下划线(很多用于局部视图或数据库操作)@pmm4654-这是一个不错的特性,我对使用这样的原理图来处理事情的范围有着复杂的感觉。我喜欢CI,因为它非常简单,而且很容易修改核心功能。不过,我不认为他们会在未来更新它太多。只是一个说明-显然zend将删除这个,他们建议不要使用它。我使用codeigniter,并使用下划线主要是为了避免键入“private”,但我将进行更改。最后,codeigniter正在进行非常积极的开发-正在进行CI3的发布,下一个CI4正在进行中。很好
example.com/index.php/blog/_utility/