If all the methods you call return the same object to create a free interface (as opposed to chaining different objects together), it should be pretty trivial to record method calls in the object itself.
eg:
class Eg { protected $_callStack = array(); public function f1() { $this->_callStack[] = __METHOD__;
Then a chain of calls such as
$a = new Eg; $a->f1()->f2()->f1();
leaves the call stack as follows: array ('f1', 'f2', 'f1');
source share