Php codeigniter';什么是负载工作?

Php codeigniter';什么是负载工作?,php,codeigniter,load,Php,Codeigniter,Load,我在理解codeigniters加载是如何工作的方面遇到了一些困难 首先你有一个自动加载,看起来很简单,每次都会加载。这听起来很适合我一直用的东西 其次,您可以在线加载所有内容。但我的问题是:它能装载多久 假设我在控制器中加载表单验证库,然后加载模型,我可以在模型中使用表单验证,还是必须重新加载它? 继续,假设我加载了一个视图和另一个控制器,我可以使用表单验证吗?还是我需要加载? 在重定向之后? 如果我加载一个模型或助手而不是库,怎么样? 假设我想在另一个模型中使用一个模型,在哪里加载该模型 因

我在理解codeigniters加载是如何工作的方面遇到了一些困难

首先你有一个自动加载,看起来很简单,每次都会加载。这听起来很适合我一直用的东西

其次,您可以在线加载所有内容。但我的问题是:它能装载多久

假设我在控制器中加载表单验证库,然后加载模型,我可以在模型中使用表单验证,还是必须重新加载它? 继续,假设我加载了一个视图和另一个控制器,我可以使用表单验证吗?还是我需要加载? 在重定向之后? 如果我加载一个模型或助手而不是库,怎么样? 假设我想在另一个模型中使用一个模型,在哪里加载该模型


因此,基本的问题是,在我需要重新加载之前,加载需要多长时间,或者更确切地说,要加载多长时间?

在编写自己的模型或帮助程序时加载一些内容,例如:

$ci = get_instance();
$ci->load->library('user_agent');
$ci->load->database();

关于所有其他问题,我认为您应该加载每个控制器所需的内容。

它一直保持在那里,直到时间结束(即,当您的脚本完成并且宇宙崩溃时)

正如@yi_H正确指出的,加载将持续当前脚本的整个生命周期。也就是说,当您调用控制器的方法时,将加载资源。如果在另一个方法中调用相同的资源,则该方法不再可用

这是因为控制器在每次请求时都会初始化,所以当您访问
index.php/mycontroller/method1
控制器已初始化(您可以启用日志并清楚地看到这一点)。在您的方法中,您可以加载html助手。 如果您随后访问
index.php/mycontroller/method2,
,并且它也需要html帮助程序,但是您没有将其加载到方法中,您将得到一个错误,即function not found

因此,基本上,如果您想让相同的资源始终可用,您有3种选择:

  • 在application/config/autoloader.php中自动加载它
  • 在每次请求时加载它,即在将使用该资源的每个方法内部
  • 将其放入控制器的构造函数中,以便在每次请求时始终对其进行初始化
  • 它或多或少与自动加载相同,不同的是它只适用于您放入构造函数的控制器,因此当您不希望在每个控制器上加载某些内容(如使用自动加载)但仅在少数控制器上加载时,您会得到好处。 为了使用最后一种方法,请记住在控制器内调用父构造函数(就像通常对模型所做的那样):


    好吧,如果是这样的话,为什么我不能自动加载我知道我将要使用的所有东西呢?因为如果自动加载总是重新加载所有内容,那就没有意义了。还是我没有理解剧本结尾的意思?脚本是否在用户离开我的网站或页面加载完成时结束?页面生成完成时结束。对于深奥的答案:)维杰托:对于下一个请求,脚本将开始和结束。现在我明白了:D谢谢大家!
    function __construct()
    {
      parent::__construct();
      $this->load->library('whateveryouwant');
    }