笨 - 私有函数(CodeIgniter - Private functions)

2019-09-16 16:10发布

我已经开始现在笨玩。 我用自己的用户指南和其它第三方的教程可用于学习。 我有点停留在私人活动命名。 基于用户指南 ,我要一个前缀_中的私有函数的名称。 但是, 在本教程中 ,选中添加注销部分。 在这里面,有一个私有函数: private function check_isvalidated() 在这里,它不是以字符为前缀_

所以这也是一个公认的命名约定? 与此同时,还有另外一个称为_output() 处理输出 。 这是一个私有函数的命名约定公共职能!

这是一个有点当我尝试以系统化的方式来学习混淆的。

Answer 1:

_前缀是在定义函数的公约CONTROLLER

用户指南说:

在某些情况下,你可能想从公共访问隐藏的某些功能。 为了使一个函数私有,只需添加下划线作为名称前缀,它不会通过一个URL请求提供服务。

http://www.codeigniter.com/user_guide/general/controllers.html#private-methods

添加一个_是CodeIgniter的自己的控制器(仅在控制器)声明函数的方式,不能由用户直接调用:

  • Controller的功能被映射到URL的部件( controller/function
  • 有在控制器的功能不应该被映射到URL

     - they are declared as `private` (available since PHP5) OR - their names start with `_` (works also for PHP4) 

关于_output功能,它是公共的,但它不能直接调用,因为它包含_

为什么上市?

该功能由系统调用,因此它需要从类的外部访问,这是不是一个私有函数。 但是,它包含_ ,以确保它不通过URL调用。

综上所述,如果你在你的控制器功能,你不想被通过URL直接调用,加_前缀或使用private接入运营商。 无论是他们中的一个是足够好的。

仅供参考,像的Yii或Zend框架其他框架,使用该action前缀的所有控制器的功能,其可以通过URL调用(映射)。



Answer 2:

当用户提示不说,你必须用下划线控制器内的私有函数前缀的函数名称,它不是强制性这样做。 虽然,这可能是遵循约定一个好主意,所以建议你这样做。

如果访问修饰符是可以看到用下划线前缀的函数名时,显着的影响public 。 在这种情况下,如果您尝试访问通过URL的功能会给你一个404错误。 但在情况下,你有访问修饰符设置为private不要紧,你是否好象用下划线前缀的函数名。

但是,在本教程中,选中添加注销部分。 在这里面,有一个私有函数:私有函数check_isvalidated()。 在这里,它不是以字符为前缀_。

在该教程中,函数名不以下划线前缀,但它是一个私有函数,因为它被声明为一个。 因此,尝试通过URL来访问它不会工作。

与此同时,有)另一个称为_output(:处理输出。 这是一个私有函数的命名约定公共职能!

我已经解释这一点,但我想指出的是, _output()函数是那些将在某一点的脚本执行过程中被称为特殊功能之一。 在这种情况下,笨就会调用这个函数的函数结束,权当是时候输出的东西到浏览器。



文章来源: CodeIgniter - Private functions
标签: codeigniter