2011-10-29 5 views
1

あるクラスでは、$ this-> view()を呼び出します。これは、その拡張クラスによって処理されます。しかし、親ビュー()でメソッドの名前を取得するにはどうすればよいですか?PHPにget_method()関数はありますか?

それがやや明確にするには、次の

<?php 
class UsersController extends Controller 
    public function signup() { 
     $this->view(); 
    } 
} 
class Controller { 
    public function view() { 
     // How can I get 'signup' so that I can include 'views/Users/signup.php' 
    } 
} 
?> 

答えて

1

を使用している

、はるかに簡単(したがってより良い)解決策は以下のとおりです。

class UsersController extends Controller 
    public function signup() { 
     $this->view(__FUNCTION__); 
    } 
    public function signup_from_facebook() { 
     // Do some facebook-y stuff here 
     $this->view('signup'); 
    } 
} 
class Controller { 
    public function view($page) { 
     include 'views/Users/' . $page . '.php'; 
    } 
} 
+0

つ以上の引数agai nst 'debug_backtrace()'はそれがslowwwwであるということです。 –

+0

ビューのファイル名がメソッドと異なる場合に変数を予約したいと考えていました。 –

+0

@Pekkaはい、非常にエラーが発生しやすく、恐ろしいスタイルです。 – phihag

2

ザ・唯一の完全に自動化の方法は、debug_backtrace()を使用しているが、それは良いアイデアは本当に遅いですので、ありません。あなたは、理論的には、debug_bugtraceで呼び出したメソッドの名前を決めることもできますが頭に浮かぶ最高半自動の方法は__FUNCTION__magic constant:

<?php 
class UsersController extends Controller 
    public function signup() { 
     $this->view(__FUNCTION__); 
    } 
} 
class Controller { 
    public function view($methodname) { 
     echo $methodname; // will output "signup" 
    } 
} 
?> 
+0

私はビューのファイル名が、法と異なる場合のために、変数を確保するために期待していた。.. –

関連する問題