कॉलर्स के चर प्राप्त करने का कोई तरीका नहीं है, लेकिन आप उनके तर्क प्राप्त कर सकते हैं। यह आसानी से debug_backtrace()
साथ किया जाता है:
<?php
class DebugTest
{
public static function testFunc($arg1, $arg2) {
return self::getTrace();
}
private static function getTrace() {
$trace = debug_backtrace();
return sprintf(
"This trace function was called by %s (%s:%d) with %d %s: %s\n",
$trace[1]["function"],
$trace[1]["file"],
$trace[1]["line"],
count($trace[1]["args"]),
count($trace[1]["args"]) === 1 ? "argument" : "arguments",
implode(", ", $trace[1]["args"])
);
}
}
echo DebugTest::testFunc("foo", "bar");
इस कार्यक्रम चल रहा है, हम इस उत्पादन प्राप्त करें:
This trace function was called by testFunc (/Users/mike/debug.php:23) with 2 arguments: foo, bar
debug_backtrace()
एक सरणी देता है; तत्व 0 वह फ़ंक्शन है जिसमें फ़ंक्शन को स्वयं कहा जाता था, इसलिए हम उदाहरण में तत्व 1 का उपयोग करते हैं। आप ट्रेस का बैक अप लेने के लिए यात्रा करने के लिए एक लूप का उपयोग कर सकते हैं।
यदि आप * ऐसा कर सकते हैं, तो आपको अंततः यह पता चल जाएगा कि यह क्या बुरा विचार है (लॉगिंग के बाहर, वैसे भी)। – Nicole
@ उत्पत्ति: केवल यही नहीं। कॉलिंग स्कोप प्राप्त करने में सक्षम होने से पैरामीटर पास करने के उद्देश्य को पूरी तरह से हराया जाएगा। – pyon
मुझे नहीं लगता कि शीर्ष के नीचे स्टैक फ्रेम में परिभाषित चर प्राप्त करना संभव है। – GWW