如何获取方法调用所来自的类的名称

时间:2014-02-26 11:06:03

标签: php codeigniter

如何获取方法调用所来自的类的名称。 例如

Class Someclass{
 AnotherClass/methodname();
}


Class AnotherClass{
    function getNameOfOriginatingClass{
     //how do u achieve this?
      }
}

这个问题将帮助我解决这个问题 How to get the class from which a request originates in codeignitor请检查并帮我解决

我如何让AnotherClass知道请求来自Someclass?

4 个答案:

答案 0 :(得分:1)

这取决于你的网址,但你可以做这样的事情......

 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]将包含您之前的函数名称,而前一个函数名称将包含以前的类名,具体取决于您的URL。

答案 1 :(得分:0)

您的意思是获取父类名称吗?使用 http://pl1.php.net/manual/en/function.get-parent-class.php 但是,父母的班级必须由孩子延长。

答案 2 :(得分:0)

我不知道这对于CodeIgniter是否有用,但在php中有一个名为debug_backtrace()的函数可以完成以下任务:

class Animal {
    public function eat($food) {
        echo "Animal is eating : " . $food;
        $tree = new Tree();
        $tree->grow();
    }
}

class Tree {
    public function grow() {
        $bt = debug_backtrace();
        //var_dump($bt);
        echo "<br />";
        if (isset($bt[1]['object']))
            echo get_class($bt[1]['object']);
        echo "<br />Tree is growing";
    }
}

$animal = new Animal();
$animal->eat("Food");

输出:

Animal is eating : Food
Tree
Animal
Tree is growing

答案 3 :(得分:0)

您也可以将调用者作为参数传递

<?php

Class AnotherClass{

    public function getNameOfOriginatingClass($object){
        echo get_class($object);
    }
}

Class Someclass{

    public function __construct(){
        $A = new AnotherClass();
        $A->getNameOfOriginatingClass($this);
    }

}


$C = new Someclass();