CodeIgniter の Application ディレクトリの外に「Store」というディレクトリが 1 つあります。ここでは、「Store」ディレクトリから 1 つのコントローラー メソッドを呼び出す必要があります。
アプリケーションディレクトリの外にあるディレクトリからコントローラーメソッドを呼び出すことは可能ですか?
ありがとう。
CodeIgniter の Application ディレクトリの外に「Store」というディレクトリが 1 つあります。ここでは、「Store」ディレクトリから 1 つのコントローラー メソッドを呼び出す必要があります。
アプリケーションディレクトリの外にあるディレクトリからコントローラーメソッドを呼び出すことは可能ですか?
ありがとう。
私の知る限り、$this->load
(Loader class ie) を使用することはできません。次のように直接インクルードしたとしても:
アプリケーション/コントローラー/test.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require('/absolute/path/to/dummy.php');
class Test extends CI_Controller {
public function handle(){
$d = new Dummy();
$d->handle();
}
}
ダミー.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Dummy extends CI_Controller {
public function handle(){
// do something here
}
}
直接アクセスを明確に禁止しているため、(含めて) 機能しません! しかし、それを禁止しなければ、コントローラ コードは悪用されやすく、問題は発生しません。
そのため、別の codeigniter プロジェクトの他のコントローラー部分がコマンド ラインを使用している場合、それを行う 1 つの方法です。
ダミー.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access
class Test extends CI_Controller {
public function handle(){
$d = new Dummy();
$d->handle();
}
}
アプリケーション/コントローラー/test.php
public function handle(){
exec("cd /absolute/path/to/dummyproject; php index.php dummy handle;");
}
コマンドライン引数を渡す方法もさらに詳しく知ることができます。