标题几乎概括了它。我想编写一个脚本来从第三方导入一些数据。有什么方法可以获取 CodeIgniter 的 Active Record 类的实例,或者可以从命令行运行的脚本中的特定模型?
2 回答
假设您在其中有您的 CodeIgnited 应用程序ignited/
,您有您的命令行脚本在其中运行cli/
。这是您的文件夹布局:
ignited/
application/
system/
index.php
cli/
mycli.php
现在你想cli/mycli.php
使用一些模型ignited/
首先,你应该对你的ignited
应用做一些事情:
修改您的默认控制器(在 中设置
ignited/application/config/routes.php
)。例如ignited/application/controllers/welcome.php
:class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
添加这些代码:
if ($this->input->is_cli_request()) { return; }
所以它看起来像:
class Welcome extends CI_Controller { public function index() { if ($this->input->is_cli_request()) { return; } $this->load->view('welcome_message'); } }
为了测试,我创建了一个测试模型
ignited/application/models/do_nothing_model.php
:class Do_nothing_model extends CI_Model { public function __construct() { parent::__construct(); } public function do_nothing() { return "Do nothing"; } }
好的!现在试试这个cli/mycli.php
:
require_once('../ignited/index.php');
$ci =& get_instance();
$ci->load->model('do_nothing_model');
echo $ci->do_nothing_model->do_nothing();
Drawback: unable to run the default action of your default controller in command line
UPDATE 2012-06-08: from CodeIgniter Wiki
不确定这是否是您想要的,但如果您只需要从 CLI 运行 CI,这里是用户指南参考:
http://codeigniter.com/user_guide/general/cli.html
澄清一下,您不需要它面向网络,只需设置您的应用程序并运行您需要的命令(控制器方法输入):
$ php index.php tools message "John Smith"
该示例将运行 CI 的主index.php
文件,然后是tools
控制器和方法message
,“John Smith”是您对消息的输入(可以是机器上用于文件导入的本地文件引用)。