如何获取方法调用所来自的类的名称。 例如
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?
答案 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();