如何获取脚本调用另一个脚本中的方法的路径?

How do I get the path to a script that is calling a method of a class defined in another script, from within the class?

That is, I'd like to make a call to a class method - defined in b.php - from a.php as:

PHP code

# a.php

require 'b.php';

$obj = new AsyncDecorator('ClassName');
$obj->Call('methodName');

... with, as previously mentioned, the class being defined in b.php similarly to this snippet:

PHP code

# b.php

class AsyncDecorator
{
    public function Call($method)
    {
        # Currently equals to b.php - I need it to be 'a.php'
        $require = __FILE__;
    }
}

That is, I need to know that the calling script was a.php, and I need to do it dynamically. If I'm creating and using the AsyncDecorator class in c.php, then $require should equal to 'c.php'.

A possible solution to this problem is making either the Call() method, or the initialization of the decorator to accept a $file_path parameter in which __FILE__ is passed:

PHP code

$obj = new AsyncDecorator('ClassName', __FILE__);
$obj->Call('methodName');

This has the minor downside of requiring the file path to be passed each time this object is created, which might add unnecessary parameters and not keep its use as simple and seamless as possible.

There is a gist here with a function to get the calling class.