2011-06-11 11 views
8

मैं क्या कॉल के सामने & पहले सेphp में "::" नोटेशन क्या है?

$mainframe =& JFactory::getApplication('site'); 
$sql="SELECT rt.member_id ,rt.commission,rt.sales,kt.store_id,kt.user_id FROM jos_report 
rt JOIN jos_kingdom_tickets kt WHERE rt.member_id=kt.ticket_id"; 
$db =& JFactory::getDBO(); 

धन्यवाद कुछ php कोड के माध्यम से देख रहा हूँ और मैं इस "::" अंकन मैं पता नहीं इसका क्या मतलब है कि देखें ... भी

उत्तर

22

::, the scope resolution operator, स्थिर सदस्यों और कक्षा के स्थिरांक के संदर्भ में उपयोग किया जाता है। इसका उपयोग सुपरक्लास के कन्स्ट्रक्टर को संदर्भित करने के लिए भी किया जाता है। जिसका अर्थ है "दो डॉट्स दो बार" हिब्रू में गुंजाइश संकल्प ऑपरेटर भी कहा जाता है "paamayim nekudotayim",:

<?php 
class A { 
    const BAR = 1; 
    public static $foo = 2; 
    private $silly; 

    public function __construct() { 
     $this->silly = self::BAR; 
    } 
} 

class B extends A { 
    public function __construct() { 
     parent::__construct(); 
    } 

    public static function getStuff() { 
     return 'this is tiring stuff.'; 
    } 
} 

echo A::BAR; 
echo A::$foo; 
echo B::getStuff(); 
?> 

एक छोटी सी सामान्य ज्ञान: यहाँ गुंजाइश संकल्प ऑपरेटर के कई विभिन्न उपयोगों को दर्शाता हुआ कुछ कोड है।

& आपके उदाहरण के संदर्भ में कुछ भी उपयोगी नहीं कर रहा है यदि आप PHP 5 या अधिक का उपयोग कर रहे हैं और हटाया जाना चाहिए। PHP 4 में, यह सुनिश्चित करने के लिए आवश्यक था कि लौटाई गई वस्तु की एक प्रति का उपयोग नहीं किया जा रहा था। PHP 5 ऑब्जेक्ट प्रतियों में तब तक नहीं बनाया जाता है जब तक कि clone नहीं कहा जाता है। और इसलिए & की आवश्यकता नहीं है। अभी भी एक मामला है जहां & PHP 5 में अभी भी उपयोगी है: जब आप किसी सरणी के तत्वों पर पुनरावृत्ति कर रहे हैं और मानों को संशोधित करते हैं, तो आपको सरणी के तत्वों को प्रभावित करने के लिए & ऑपरेटर का उपयोग करना होगा।

0

यह स्कोप ऑपरेटर है, जो कक्षाओं के तहत स्थिरांक या स्थैतिक तरीकों के संदर्भ में उपयोग किया जाता है। तो:

class C { 
    const D = 2; 
} 

echo C::D; // 2 

आपके मामले में, यह किसी विशेष उदाहरण से बंधे वर्ग की विधि को कॉल करता है।

2

:: PHP, C++ में स्कोप ऑपरेटर है, लेकिन जावा में नहीं है। इस मामले में, इसका उपयोग कक्षा की स्थिर विधि को कॉल करने के लिए किया जाता है। एक स्थैतिक विधि एक विधि है जिसे कक्षा के बाहर से बुलाया जा सकता है, भले ही आपके पास इसका कोई उदाहरण न हो।

& इंगित करता है कि फ़ंक्शन लौटने की प्रतिलिपि बनाने के बजाय, यह वापस ऑब्जेक्ट का संदर्भ लेता है। इस मामले में, वे सिंगलटन ऑब्जेक्ट्स लौटते हैं जो एप्लिकेशन में उपयोग किए जाते हैं, उदा। डेटाबेस के साथ इंटरफेस करने के लिए (दूसरे मामले में)

+0

मुझे लगता है कि यह भी C++ पर लागू होता है। – Blender

+0

हाँ, यह मेरे उत्तर में है :) – Cronco

+0

:: ** ** ** ** जावा में स्कोप रिज़ॉल्यूशन ऑपरेटर नहीं है। – Asaph

1

आप इसका उपयोग बिना किसी इंस्टॉलेशन के कक्षा के स्थिर तरीकों को संदर्भित करने के लिए कर सकते हैं।

उदाहरण के लिए:

class myClass { 

    public static function staticFunction(){ 
     //... 
    } 

    public function otherFunction(){ 
     //... 
    } 

} 

यहाँ आप वर्ग के myClass::staticFunction() बाहर इस्तेमाल कर सकते हैं, लेकिन आप एक ही तरह से otherFunction() उपयोग करने से पहले एक नया myClass वस्तु बनाने के लिए होगा।

संबंधित मुद्दे