PHP
जादू लगातार
खोज…
टिप्पणियों
मैजिक __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
उपयोग किया जाता है। यह है;
विंडोज पर:
अन्यथा