タイトルはそれをかなり要約しています。サードパーティからデータをインポートするスクリプトを作成したいと思います。CodeIgniterのActiveRecordクラスのインスタンス、またはコマンドラインから実行できるスクリプト内の特定のモデルのインスタンスを取得する方法はありますか?
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();
欠点:コマンドラインでデフォルトコントローラーのデフォルトアクションを実行できない
UPDATE 2012-06-08 : CodeIgniter Wikiより
これが必要かどうかはわかりませんが、CLI から CI を実行する必要がある場合は、次のユーザーガイド リファレンスを参照してください。
http://codeigniter.com/user_guide/general/cli.html
明確にするために、Web に面する必要はありません。アプリをセットアップして、必要なコマンドを実行するだけです (コントローラー メソッドの入力)。
$ php index.php tools message "John Smith"
index.php
この例では、CIのプライマリ ファイルを実行し、次にtools
コントローラーとメソッドを実行しますmessage
。"John Smith" はメッセージへの入力です (ファイル インポート用のマシン上のローカル ファイル参照である可能性があります)。