【发布时间】:2015-02-10 23:29:32
【问题描述】:
以下代码在使用php index.php [controllername] [methodname] 从php-cli 调用的控制器中调用。
这段代码也嵌套在foreach 循环中。该代码最终调用了一个模型,该模型使用内置的 mysql 驱动程序查询数据库。这里的问题是第一次迭代,Codeigniter 能够从模型调用成功连接到数据库。不过……
在第二次迭代中,模型被加载,并且当驱动程序从数据库查询返回空结果时调用该方法。 $ci_instance 变量是控制器上下文中 $this 的副本。
在 Codeigniter PHP 单元测试中尝试模拟模型时,我也遇到了类似的问题。
$thread = ThreadManager::async(function () use (
$ci_instance,
$model,
$function_name,
$vars,
$log_id,
$cron
) {
$exception = NULL;
try
{
$ci_instance->load->model($model);
$success = $ci_instance->$model->$function_name($vars);
}
catch(Exception $e)
{
$exception = $e->getMessage();
}
if($success)
{
$ci_instance->cron_queue_model->close_crontab($cron['id']);
$ci_instance->cron_log_model->update_note($log_id, 'info', 'Completed #'. $cron['id']. '-'. $model.'/'.$function_name . ' ' . $success);
}
else
{
$ci_instance->cron_log_model->insert_error($cron['id'], 'error', 'Failed -'. $model.'/'.$function_name . ' ' . $exception);
log_message('error', 'The model:' . $model . ' function:' . $function_name . ' with vars:' . $vars . ' did not run as expected ' . $exception);
}
});
【问题讨论】:
-
你好约瑟夫。您的最后一次编辑似乎正确缩进了代码,这是我不明白的目的 - 但这删除了我所做的一些可读性编辑(我已经恢复了我的编辑)。在编辑之前刷新浏览器有助于避免这种情况,如果您在编辑过程中看到警告,通常最好取消、刷新并重试,以免覆盖最新版本。
-
抱歉@helfer 我不会写很多问题,所以还是习惯了它的工作原理
标签: php codeigniter