खोज…


टिप्पणियों

मैजिक __CONSTANTNAME__ उनके __CONSTANTNAME__ फॉर्म द्वारा प्रतिष्ठित हैं।

वर्तमान में आठ जादुई स्थिरांक हैं जो इस आधार पर बदलते हैं कि उनका उपयोग कहां किया जाता है। उदाहरण के लिए, __LINE__ का मूल्य उस रेखा पर निर्भर करता है जिसका उपयोग आपकी स्क्रिप्ट में किया जाता है।

ये विशेष स्थिरांक केस-असंवेदनशील हैं और निम्नानुसार हैं:

नाम विवरण
__LINE__ फ़ाइल की वर्तमान पंक्ति संख्या।
__FILE__ फ़ाइल का पूर्ण पथ और फ़ाइल नाम सिमिलिंक के साथ हल किया गया। यदि किसी शामिल के अंदर उपयोग किया जाता है, तो सम्मिलित फ़ाइल का नाम वापस आ जाता है।
__DIR__ फ़ाइल की निर्देशिका। यदि शामिल के अंदर उपयोग किया जाता है, तो शामिल फ़ाइल की निर्देशिका वापस कर दी जाती है। यह dirname(__FILE__) बराबर है। जब तक यह रूट डायरेक्टरी नहीं होती, तब तक इस डायरेक्टरी नाम में एक अनुगामी स्लेश नहीं होता है।
__FUNCTION__ वर्तमान फ़ंक्शन नाम
__CLASS__ वर्ग का नाम। वर्ग के नाम में वह नामस्थान शामिल है जिसे यह (जैसे Foo\Bar ) घोषित किया गया था। जब एक विशेषता विधि में उपयोग किया जाता है, तो __CLASS__ उस वर्ग का नाम है जिसमें विशेषता का उपयोग किया जाता है।
__TRAIT__ लक्षण नाम। विशेषता नाम में वह नामस्थान शामिल है जिसे यह घोषित किया गया था (जैसे Foo\Bar )।
__METHOD__ वर्ग विधि का नाम।
__NAMESPACE__ वर्तमान नामस्थान का नाम।

इन स्थिरांक के लिए सबसे आम उपयोग मामला डिबगिंग और लॉगिंग है

__FUNCTION__ और __METHOD__ के बीच अंतर

__FUNCTION__ केवल फ़ंक्शन का नाम देता है जबकि __METHOD__ फ़ंक्शन के नाम के साथ वर्ग का नाम लौटाता है:

<?php

class trick
{
    public function doit()
    {
        echo __FUNCTION__;
    }

    public function doitagain()
    {
        echo __METHOD__;
    }
}

$obj = new trick();
$obj->doit(); // Outputs: doit
$obj->doitagain();  // Outputs: trick::doitagain

__CLASS__, get_class () और get_called_class () के बीच अंतर

__CLASS__ मैजिक स्थिरांक बिना पैरामीटर के कहे जाने वाले get_class() फ़ंक्शन के समान परिणाम देता है और वे दोनों उस वर्ग का नाम लौटाते हैं जहां इसे परिभाषित किया गया था (यानी जहां आपने फ़ंक्शन कॉल / निरंतर नाम लिखा था)।

इसके विपरीत, get_class($this) और get_called_class() फ़ंक्शन कॉल करें, क्या दोनों वास्तविक वर्ग के नाम को वापस कर देंगे जो कि तत्काल था:

<?php

class Definition_Class {

  public function say(){
     echo '__CLASS__ value: ' . __CLASS__ . "\n";
     echo 'get_called_class() value: ' . get_called_class() . "\n";
     echo 'get_class($this) value: ' . get_class($this) . "\n";
     echo 'get_class() value: ' . get_class() . "\n";
  }
  
}

class Actual_Class extends Definition_Class {}

$c = new Actual_Class();
$c->say();
// Output:
// __CLASS__ value: Definition_Class
// get_called_class() value: Actual_Class
// get_class($this) value: Actual_Class
// get_class() value: Definition_Class

फ़ाइल और निर्देशिका स्थिरांक

मौजूदा फ़ाइल

आप __FILE__ जादू स्थिरांक का उपयोग करके वर्तमान PHP फ़ाइल (पूर्ण पथ के साथ) का नाम प्राप्त कर सकते हैं। यह अक्सर लॉगिंग / डिबगिंग तकनीक के रूप में उपयोग किया जाता है।

echo "We are in the file:" , __FILE__ , "\n";

वर्तमान निर्देशिका

निर्देशिका के लिए पूर्ण पथ प्राप्त करने के लिए जहां वर्तमान फ़ाइल स्थित है __DIR__ जादू स्थिरांक का उपयोग करें।

echo "Our script is located in the:" , __DIR__ , "\n";

निर्देशिका में पूर्ण पथ प्राप्त करने के लिए जहां वर्तमान फ़ाइल स्थित है, dirname(__FILE__) उपयोग करें।

echo "Our script is located in the:" , dirname(__FILE__) , "\n";

बेस डायरेक्टरी को सेट करने के लिए पीएचपी फ्रेमवर्क द्वारा वर्तमान निर्देशिका का उपयोग करना अक्सर होता है:

// index.php of the framework

define(BASEDIR, __DIR__); // using magic constant to define normal constant

// somefile.php looks for views:

$view = 'page';
$viewFile = BASEDIR . '/views/' . $view;

विभाजक

Windows सिस्टम पथों में / को पूरी तरह से समझता है इसलिए DIRECTORY_SEPARATOR का उपयोग मुख्य रूप से पथों को पार्स करते समय किया जाता है।

जादू स्थिरांक के अलावा PHP पथों के साथ काम करने के लिए कुछ निश्चित स्थिरांक भी जोड़ता है:

  • एक पथ में निर्देशिकाओं को अलग करने के लिए DIRECTORY_SEPARATOR निरंतर। विंडोज पर मूल्य / पर * nix, और \ लेता है। विचारों के साथ उदाहरण के साथ फिर से लिखा जा सकता है:
$view = 'page';
$viewFile = BASEDIR . DIRECTORY_SEPARATOR .'views' . DIRECTORY_SEPARATOR . $view;
  • $PATH वातावरण चर में पथों को अलग करने के लिए शायद ही कभी PATH_SEPARATOR उपयोग किया जाता है। यह है ; विंडोज पर : अन्यथा


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow