Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP में Current Function Name प्राप्त करना


PHP में currently executing function/method का नाम प्राप्त करने के magic constants।

Magic Constants

ConstantReturnsScope
__FUNCTION__Function name (case-sensitive)Function के अंदर
__METHOD__Class::method nameMethod के अंदर
__CLASS__Class nameClass के अंदर
__TRAIT__Trait nameTrait के अंदर
__NAMESPACE__Namespace nameNamespace में

Basic Usage

<?php
function myFunction() {
    echo __FUNCTION__; // myFunction
}

class MyClass {
    public function myMethod() {
        echo __METHOD__; // MyClass::myMethod
        echo __FUNCTION__; // myMethod (only method name)
    }
    
    public static function staticMethod() {
        echo __METHOD__; // MyClass::staticMethod
    }
}

myFunction();
$obj = new MyClass();
$obj->myMethod();
MyClass::staticMethod();

Inheritance के साथ व्यवहार

<?php
class Base {
    public function display() {
        echo "__FUNCTION__: " . __FUNCTION__ . "\n"; // display
        echo "__METHOD__: " . __METHOD__ . "\n";     // Base::display
        echo "__CLASS__: " . __CLASS__ . "\n";       // Base
    }
}

class Derived extends Base {
    public function display() {
        echo "__FUNCTION__: " . __FUNCTION__ . "\n"; // display
        echo "__METHOD__: " . __METHOD__ . "\n";     // Derived::display (actual called class!)
        echo "__CLASS__: " . __CLASS__ . "\n";       // Derived
    }
}

$base = new Base();
$base->display();

echo "---\n";

$derived = new Derived();
$derived->display();

Anonymous Functions / Closures

<?php
$closure = function() {
    echo __FUNCTION__; // {closure}
};

$arrowFn = fn() => __FUNCTION__; // {closure}

$closure();
$arrowFn();

Trait में

<?php
trait Logger {
    public function log($msg) {
        echo "[" . __TRAIT__ . "::" . __FUNCTION__ . "] $msg\n";
    }
}

class Service {
    use Logger;
}

$svc = new Service();
$svc->log('Starting...'); // [Logger::log] Starting...

Debug Backtrace (Caller Info)

<?php
function getCallerInfo() {
    $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
    // [0] = getCallerInfo, [1] = caller
    
    if (isset($trace[1])) {
        $caller = $trace[1];
        return [
            'function' => $caller['function'] ?? 'unknown',
            'class' => $caller['class'] ?? null,
            'file' => $caller['file'] ?? 'unknown',
            'line' => $caller['line'] ?? 0,
        ];
    }
    return null;
}

function outer() {
    inner();
}

function inner() {
    $info = getCallerInfo();
    print_r($info);
    // Array ( [function] => outer [class] => [file] => ... [line] => ... )
}

outer();

Practical: Logging Helper

<?php
function debugLog($message, $context = []) {
    $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
    $caller = $trace[1] ?? [];
    
    $log = [
        'time' => date('c'),
        'function' => $caller['function'] ?? 'global',
        'class' => $caller['class'] ?? '',
        'file' => basename($caller['file'] ?? ''),
        'line' => $caller['line'] ?? 0,
        'message' => $message,
        'context' => $context
    ];
    
    error_log(json_encode($log, JSON_UNESCAPED_UNICODE));
}

// उपयोग
class UserService {
    public function createUser($data) {
        debugLog('Creating user', ['email' => $data['email']]);
        // ...
    }
}
  1. एंड्रॉइड में वर्तमान एक्टिविटी का नाम कैसे प्राप्त करें? एंड्रॉइड में वर्तमान एक्टिविटी का नाम कैसे प्राप्त करें?

    एंड्रॉइड में प्रोग्रामेटिकली वर्तमान एक्टिविटी का क्लास नाम प्राप्त करना यह सरल ट्यूटोरियल दिखाता है कि getClass().getName() या getClass().getSimpleName() का उपयोग करके वर्तमान एक्टिविटी का पूरा या सरल नाम कैसे प्राप्त करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। च

  1. एंड्रॉइड में वर्तमान ब्लूटूथ नाम कैसे प्राप्त करें एंड्रॉइड में वर्तमान ब्लूटूथ नाम कैसे प्राप्त करें

    ब्लूटूथ एडाप्टर का नाम प्राप्त करना यह उदाहरण दर्शाता है कि BluetoothManager का उपयोग करके डिवाइस के वर्तमान ब्लूटूथ नाम को कैसे प्राप्त करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट फ़ाइल <?xml version=1.0 encoding=utf-8?> <LinearLayout xmlns:andro

  1. Android में वर्तमान थ्रेड नाम कैसे प्राप्त करें? Android में वर्तमान थ्रेड नाम कैसे प्राप्त करें?

    Android में वर्तमान थ्रेड का नाम प्राप्त करना उदाहरण में जाने से पहले, हमें पता होना चाहिए कि थ्रेड क्या है। एक थ्रेड एक हल्का सब-प्रोसेस है, यह UI को बाधित किए बिना बैकग्राउंड ऑपरेशन करने जा रहा है। यह उदाहरण दर्शाता है कि Android में वर्तमान थ्रेड नाम कैसे प्राप्त करें। चरण 1: नया प्रोजेक्ट बनाएं