2013-05-14 28 views
15

我使用笨2.笨正确的方法来检查,如果库/帮手/ core文件被加载

感激,如果有人能证明正确的方法来检查,如果下列文件:
- 库文件加载?
- 帮助文件被加载?
- 配置文件被加载?
- 模型文件被加载?
- third_party文件被加载?

问候

+0

当你故意错误地加载它,会发生什么?你有任何CI错误吗?因为你应该。 – qwertzman 2013-05-15 08:54:45

+0

不要检查,只需加载,Codeigniter有自己确定它的有效方法。看看这里:http://stackoverflow.com/questions/19630019/codeigniter-load-libraries-if-not-already-loaded/23597257#23597257 – 2014-05-12 15:04:57

回答

22

您可以使用本机PHP函数class_exists(),以确定是否调用它之前类已经被定义, 。同样,使用method_exists()将检查类方法是否存在。

由于帮助程序是函数的集合,而不是方法,因此可以使用function_exists()完成检查。

if (class_exists('Library')) 
{ 
    $this->library->myMethod(); 
} 

如需进一步信息,请参阅

http://php.net/manual/en/function.class-exists.php

http://us.php.net/manual/en/function.method-exists.php

+0

感谢您的指导:) – user1884324 2013-05-14 06:40:27

+0

这是正确的方法来检查,但如果原因检查是包括图书馆,然后不要使用这个。我做了一个基准,证明默认的Codigniter加载库的方式是最好的方法。看这里:http:// stackoverflow。com/questions/19630019/codeigniter-load-libraries-if-not-already-loaded/23597257#23597257 – 2014-05-12 15:03:07

9

你不必去检查,你只加载它们你需要的地方一定有他们。

使用CI的加载库($this->load->[library|model|helper])将始终只加载一次。如果打开调试日志记录,可以看到这一点。

+0

您确定吗?我包含会话库几次,使用的内存显着增加,我只是测试了它。 Codeigniter错误? – 2014-05-11 19:18:56

+3

查看Loader.php并搜索'第二次尝试被忽略'(注意:如果您提供自定义名称,它将创建一个新实例)。 – minboost 2014-05-12 06:16:14

+1

你说得对,Codeigniter的方式是最有效的方法,我做了一点基准 – 2014-05-12 14:48:46

1

一旦加载您的实例是在控制器上存储,所以要检查如果模型已加载:

if (isset($this->my_model)) 

其中$这是你的控制器。

5

这是codeigniter方法来检查加载的库。

if($this->load->is_loaded('session') 
{ 
    $this->load->library('session'); 
} 
0

最好的方法是使用Codeigniter的Loader类。 Loader又名load具有内置方法is_loadedis_loaded方法检查一个类是否已经被加载。

如果该类尚未加载,则is_loaded返回FALSE,否则返回属性名称。

例子:

$this->load->library('table'); 
$this->load->is_loaded('table'); //Returns 'table' 
$this->load->is_loaded('blabla_library'); //Returns FALSE 
相关问题