3

CodeIgniter の Application ディレクトリの外に「Store」というディレクトリが 1 つあります。ここでは、「Store」ディレクトリから 1 つのコントローラー メソッドを呼び出す必要があります。

アプリケーションディレクトリの外にあるディレクトリからコントローラーメソッドを呼び出すことは可能ですか?

ありがとう。

4

1 に答える 1

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;");
}

コマンドライン引数を渡す方法もさらに詳しく知ることができます。

于 2012-09-04T07:10:51.883 に答える