我想获取方法名称。例如,网址会调用method1
,并调用私有method2
,method2
想要知道谁调用此方法。我怎么能这样做。
我可以在__FUNCTION__
上使用$this->router->method
或method1
,并将其设为method2
参数。但我想知道我可以在method2
上从method1
调用此方法吗?万分感谢。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class ControllerName extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function method1()
{
$this->_method2()
}
private function _method2()
{
// How to get call method name method1,
// Don't use parameter
// $who_call_me = 'method1';
}
}
答案 0 :(得分:1)
您可以使用debug_backtrace()函数。我想这是了解你是否不能使用参数的唯一方法。
$callers=debug_backtrace();
echo $callers[1]['function'];
如果您只想知道上一个调用的方法,请使用array_shift。它会显示结果 -
$caller=array_shift($callers);
echo "Called by {$caller['function']}";
答案 1 :(得分:0)
这取决于你的网址,但你可以做这样的事情......
function getNameOfOriginatingClass{
$this->load->library('user_agent');
$previous_url = $this->agent->referrer();
$url_segments = explode('/',$previous_url);
echo '<pre>';print_r($url_segments);
}
打印完这个结果后,你可以看到你的链接被分成一个数组中的部分。通常$ url_segments [3]或$ url_segments [4]将包含你以前的函数名,而前一个函数名将包含以前的类名,具体取决于你的网址。