Php 名为'的Codeigniter函数;新';
为什么不能在控制器(可能还有其他地方)中将Codeigniter函数命名为“new” 错误结果: 分析错误:语法错误,意外的'new'(T_new),需要标识符(T_字符串)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
中这样做,而且在您编写的所有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/