codeigniter从父方法获取方法名称

时间:2014-03-27 08:18:15

标签: php codeigniter

我想获取方法名称。例如,网址会调用method1,并调用私有method2method2想要知道谁调用此方法。我怎么能这样做。

我可以在__FUNCTION__上使用$this->router->methodmethod1,并将其设为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';
  }

}

2 个答案:

答案 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]将包含你以前的函数名,而前一个函数名将包含以前的类名,具体取决于你的网址。