PHP中是否有get_method()函数?

时间:2011-10-29 10:40:11

标签: php

在一个课程中,我调用$ this-> view(),它将由其扩展类处理。但是如何在父视图();

中获取方法的名称

使其更清晰:

<?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'
    }
}
?>

2 个答案:

答案 0 :(得分:2)

唯一的全自动方式是使用debug_backtrace(),但这确实很慢,因此不是一个好主意。

最好的半自动方式是使用__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"
    }
}
?>  

答案 1 :(得分:1)

虽然理论上可以使用debug_bugtrace确定调用方法的名称,但更简单(和因此更好的)解决方案是:

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';
    }
}