我正在使用php和codeigniter,它有自动加载类。 我的第一个问题是,
If I use autoload class to load all model will it make my application slower? Or is there no effect?
我的第二个问题:
Which one is better and faster, loading all model you need using autoload class, Or load only some models you need in a class function?
答案 0 :(得分:2)
1)自动加载类显然会使您的应用程序变慢。因为它使用php4 require函数来加载文件。有一些黑客使用php 5自动加载功能。希望,codeigniter的新所有者将添加对自动加载的支持。
2)最好使用特定于负载的模型而不是自动加载。在前一点我说明了这背后的原因。基本上,最好只加载所需的模型,帮助程序,库和资产。它确保您使用最少的时间和记忆。
答案 1 :(得分:0)
我使用自动加载。它的工作就像一个魅力,对装载时间没有重大影响。
方式强>
在您使用CI autoload.php
示例对我来说,我的config / autoload.php看起来像
$autoload['libraries'] = array('database','door','acl','form_validation','notify');
并在库/ Door.php中添加了
<?php//libraries/Door.php
function multi_auto_require($class) {
#var_dump("requesting $class");
if(stripos($class, 'CI') === FALSE && stripos($class, 'PEAR') === FALSE) {
foreach (array('objects','core') as $folder){//array of folders to look inside
if (is_file(APPPATH."{$folder}/{$class}.php")){
include_once APPPATH."{$folder}/{$class}.php";
}
}
}
}
spl_autoload_register('multi_auto_require');
class Door {
我在class Door{
之上添加了此代码段,这样每次codeigniter加载门库时都会运行此代码段。
测试和基准测试 现在,对于基准测试,我在一个页面中测试了这段代码,该页面包含来自2个不同文件夹的8个自动加载对象的17个数据库查询,其中包含3个文件夹的数组。
<强>结果强>
对所有项目类使用上述方法V include_once 'classlocation.php'
,
两种方法的平均10页刷新,大约0.6秒; 所以你可以看到两种方法之间没有显着差异。
尽管我没有在不使用所有课程的网页上测试它,但我确信自动加载可以让我的CI生活更好,我对此感到满意。< / p>