在cakePHP中访问私有函数是否合适
在控制器中,我得到了两个函数,其中一个函数是私有的:在cakePHP中访问私有函数是否合适,cakephp,Cakephp,在控制器中,我得到了两个函数,其中一个函数是私有的: function toavail(){ $this->autoRender=false; $result2=$this->__avail(); if($result2==0){return "OK";} else{return 0;}
function toavail(){
$this->autoRender=false;
$result2=$this->__avail();
if($result2==0){return "OK";}
else{return 0;}
}
function __avail(){
$result1=$this->Site1->findByusername('1');
if($result1){
return 1;
}
else{
return 0;
}
}
我不确定在这种情况下它是否是访问私有函数的正确方法。您正确地访问了它(假设两个方法在同一个控制器类中),但如果您不知道,您的
\u avail()
方法并不是真正私有的。双下划线前缀是一种约定,但它只是一种约定。你的“私有”方法实际上是公开的。要使其私有化,您需要在签名中指定:
private function __avail() { ... }
您正确地访问了它,但是没有正确地声明函数 您应该将其声明为protected->protected function\uuuu avail()
来源:双下划线前缀不仅仅是一种约定,CakePHP会将此方法视为私有方法,即使使用PHP4也无法作为控制器的操作访问。好信息。我不知道那条线路,似乎在任何地方都找不到它的任何参考资料。我只能发现它被引用为一种惯例。你能用URI引用你的源代码吗?用_uu作为函数的前缀是不好的做法。根据php文档
php保留所有以_u开头的函数名。在PHP中,建议不要将函数名与uuu一起使用,除非您需要一些文档化的神奇功能。
因此,避免在控制器函数中使用uuu。@bancer今晚可能是真的,但核心蛋糕文件中满是“uuu”functions@Angel:这是很久以前为PHP4实施的。现在没有人会重复了。你的意思是受保护的函数\u avail()
(注意:只有一个下划线)一个下划线是@mark所必需的,但是如果你愿意,你可以使用一个或多个下划线(如本例所示)。然而,我建议只使用一个下划线,就像你说的那样。