查看CI源代码后的一些基本问题

cab*_*ret 6 php codeigniter

我只是看着CodeIgniter源代码,我遇到了一些我似乎无法弄清楚的事情; 我不确定它们是什么意思,因为它们大多像一两个符号,所以很难在谷歌和stackoverflow上搜索它们.

我遇到的一件事是:

$this->config =& get_config();
Run Code Online (Sandbox Code Playgroud)

我之前从未真正遇到过PHP =&(或大多数情况下&).这究竟是什么意思?难道他们分配的一个实例get_config$this->config?我假设它$this->config来自文件顶部的声明var $config = array();

我去寻找get_config()功能,我找到了以下行:

function &get_config($replace = array())
Run Code Online (Sandbox Code Playgroud)

在这里,我的问题几乎是一样的:&代表什么,它做了什么?我在CI核心文件中看到了这两件事(&=&).

我想知道的是他们评论的"风格".每个函数都以注释块开头,这是一个例子:

 /**
 * Set HTTP Status Header
 *
 * @access  public
 * @param   int     the status code
 * @param   string
 * @return  void
 */
Run Code Online (Sandbox Code Playgroud)

这是由一些插件或库生成的吗?手动执行此操作听起来很麻烦.我没有检查过像PHPDoc这样的东西,但这可能类似(或PHPDoc)吗?它似乎有用,如果它自动生成?嘻嘻.

在下一个问题上.我看到以下划线为前缀的不同功能.有明显的,__construct但也有功能_set_default_controller();_set_routing();这些下划线有任何特殊意义吗?我知道双下划线用于称为"魔术方法"的东西(我正在思考__get,__set因为那些是我自己使用过的).他们有任何"特殊"的技术含义还是纯粹的语义?如果可能的话,启发我.

最后但并非最不重要的是,在控制器核心文件中,我看到了:

class CI_Controller {

    private static $instance;

    public function __construct()
    {
        self::$instance =& $this;
                // goes on
Run Code Online (Sandbox Code Playgroud)

这里的兴趣点是self::$instance =& $this;什么意思?它是否设置$this为自身的实例(wiiiiiild guess,哈哈),所以我们可以使用$ this?或者这没有意义?实际上它没有,因为在非常基本的MVC样板中我将自己用于基本网站,我使用$ this而没有任何高级的东西.

谁能在这里提供一些见解?我将不胜感激.非常感谢提前.

Wes*_*rch 2

  1. 那里的运算&符通过引用分配一个值,这意味着进一步使用该变量将引用原始值,而不是分配的值。参考(无双关语):http://php.net/manual/en/language.references.php

  2. 注释是phpdoc风格,它们不是自己生成的,但可以方便地使用 phpdoc 或其他软件创建文档,并在 IDE 中获取预期的参数和返回值。

  3. 下划线通常表示该方法是private。当在 CI 控制器中使用时,这意味着该方法无法通过 url 访问。相关:PHP 类方法中的前导下划线有什么用?

  4. 你说得非常正确。该函数get_instance()将返回$instance的属性Controller