CodeIgniter - 私有函数

Akh*_*ran 11 codeigniter

我现在开始玩CodeIgniter了.我使用他们的用户指南和其他可用于学习的第三方教程.我对私人功能的命名有些困惑.根据用户指南,我必须_在私有函数的名称前加上一个.但在本教程中,请检查" 添加注销"部分.其中有一个私人功能:private function check_isvalidated().这里,它没有前缀字符_.

那么这也是一个公认的命名惯例?与此同时,还有一个叫做_output():处理输出.它是一个公共函数,具有私有函数的命名约定!

当我尝试以系统的方式学习时,这有点令人困惑.

Ste*_*tei 32

_前缀是在定义函数的惯例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)
    
    Run Code Online (Sandbox Code Playgroud)

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

为什么要公开?

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

总而言之,如果您的控制器中有不希望通过URL直接调用的函数,请添加_前缀或使用private访问运算符.他们中的任何一个都足够好.

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

  • 当您创建自己的其他控制器扩展的核心控制器以便在控制器之间共享相同的代码时,使用`_`是理想的选择.本质上,那些函数(在核心控制器中定义)必须是公共的才能继承和可见,但是您不希望它们在路由中使用.使用其中之一的灵活性是我喜欢CI的一个方面. (3认同)