前提
php: 7.2
フレームワーク: コードイグナイター3
実現したいこと
呼び出されたメソッド名をコンストラクタ内で取得したいです。
具体的には、
HogeController(のindex)にアクセスし、
- HogeClassを生成
- HogeClassのfunc1を呼び出し
- func1の処理の前に、コンストラクタ内にてpreFuncを呼び出し
- preFunc内にて、コントローラー側で呼び出したメソッド名(func1)に対して個別処理を実行
- func1の処理を実行
としたいです。
4の、呼び出したメソッド名(func1)を取得する方法がわかりません。
get_class($this)やdebug_backtraceなどを使ってみたのですが、うまくいかず…
「呼び出されたメソッド名をコンストラクタ内で取得」というのははそもそも無理なのでしょうか…?
また、別の方法で実現できる方法がありましたら、ご教授いただきたいです。
よろしくお願いします。
クラス
class HogeClass { public function __construct() { parent::__construct(); $this->preFunc(); } public function preFunc() { $func_name = ??? // <- func1やfunc2を取得したい // 取得したメソッド名で処理を分岐させたい switch ($func_name) { case 'func1': break; case 'func2': break; } } public function func1() { // func1の処理 } public function func2() { // func2の処理 } }
コントローラー
class HogeController { public function index() { $hoge = new HogeClass(); $hoge->func1(); } }
回答1件
あなたの回答
tips
プレビュー