जवाबों:
यह फीचर PHP 5.5 में लागू किया गया था।
दस्तावेज़: http://php.net/manual/en/migration55.new-features.php#migration55.new-features.class-name
यह 2 कारणों से बहुत उपयोगी है।
use
अपनी कक्षा को हल करने के लिए कीवर्ड का उपयोग कर सकते हैं और आपको पूर्ण कक्षा का नाम लिखने की आवश्यकता नहीं है।उदाहरण के तौर पर :
use \App\Console\Commands\Inspire;
//...
protected $commands = [
Inspire::class, // Equivalent to "App\Console\Commands\Inspire"
];
अपडेट :
यह सुविधा लेट स्टेटिक बाइंडिंग के लिए भी उपयोगी है ।
__CLASS__
मैजिक स्थिरांक का उपयोग करने के बजाय , आप static::class
अभिभावक वर्ग के अंदर व्युत्पन्न वर्ग का नाम प्राप्त करने के लिए सुविधा का उपयोग कर सकते हैं । उदाहरण के लिए:
class A {
public function getClassName(){
return __CLASS__;
}
public function getRealClassName() {
return static::class;
}
}
class B extends A {}
$a = new A;
$b = new B;
echo $a->getClassName(); // A
echo $a->getRealClassName(); // A
echo $b->getClassName(); // A
echo $b->getRealClassName(); // B
use \App\...
और use App\...
अनुमत हैं। मैं एक उप-नामस्थान में निहित वर्ग और वर्तमान नाम स्थान पदानुक्रम के बाहर एक वर्ग के बीच अंतर बनाने के लिए इसका उपयोग करता हूं।
class
विशेष है, जो पूरी तरह से योग्य वर्ग नाम प्राप्त करने के लिए php द्वारा प्रदान किया गया है।
Http://php.net/manual/en/migration55.new-features.php#migration55.new-features.class-name देखें ।
<?php
class foo {
const test = 'foobar!';
}
echo foo::test; // print foobar!
यदि आप उत्सुक हैं कि कौन सी श्रेणी में ::class
आती है, (चाहे वह भाषा का निर्माण हो, आदि), यह बहुत सरल है। यह एक स्थिर है । PHP इसे "विशेष स्थिरांक" कहता है। यह विशेष है क्योंकि यह PHP द्वारा प्रदान किया गया है।
कृपया निम्नलिखित का उपयोग करने के लिए जागरूक रहें:
if ($whatever instanceof static::class) {...}
यह एक सिंटैक्स त्रुटि फेंक देगा:
unexpected 'class' (T_CLASS), expecting variable (T_VARIABLE) or '$'
लेकिन आप इसके बजाय निम्नलिखित कर सकते हैं:
if ($whatever instanceof static) {...}
या
$class = static::class;
if ($whatever instanceof $class) {...}
$className = 'SomeCLass'; $className = new $className(); $methodName = 'someMethod'; $className->$methodName($arg1, $arg2, $arg3); /* or if args can be random array*/ call_user_func_array([$className, $methodName], $arg);
Inspire::class
"App \ Console \ Commands \ Inspire" के बराबर है, बिना पिछड़े सुस्त उपसर्ग के।