HMVC などを使用しない限り、CI のコントローラーからコントローラーをロードすることはできません。
アーキテクチャについて少し考える必要があります。別のコントローラーからコントローラー メソッドを呼び出す必要がある場合は、おそらくそのコードをヘルパーまたはライブラリに抽象化し、両方のコントローラーから呼び出す必要があります。
アップデート
あなたの質問をもう一度読んだ後、あなたの最終目標は必ずしも HMVC ではなく、URI 操作であることがわかりました。私が間違っている場合は修正してください。ただし、最初のセクションがメソッド名であり、コントローラー名を完全に省略して URL を達成しようとしているようです。
このような場合は、ルートを工夫することで、よりクリーンなソリューションを得ることができます。
非常に基本的な例として、2 つのコントローラーがあるcontroller1
としcontroller2
ます。 Controller1
にはメソッドがあり、メソッドmethod_1
にcontroller2
はメソッドがありmethod_2
ます。
次のようにルートを設定できます。
$route['method_1'] = "controller1/method_1";
$route['method_2'] = "controller2/method_2";
http://site.com/method_1
次に、メソッド 1 を URL で、メソッド 2 を で呼び出すことができますhttp://site.com/method_2
。
とはいえ、これはハードコーディングされた非常に基本的な例ですが、URL からコントローラーを削除するだけでよい場合は、必要な場所に到達できます。
コントローラーを再マッピングすることもできます。
ドキュメントから: 「コントローラーに _remap() という名前の関数が含まれている場合、URI に含まれるものに関係なく、常に呼び出されます。」:
public function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
$this->default_method();
}
}