2011-08-24 12 views
12

बेवकूफ सवाल मुझे पता है,

सभी ट्यूटोरियल वे व्याख्या नहीं करते कारण है कि वे इस $ का उपयोग करें।

क्या यह कोडिनिटर में बेस क्लास से किसी ऑब्जेक्ट की तरह है?

किसी भी स्पष्टीकरण का स्वागत किया जाएगा! :)

धन्यवाद

+3

http://www.php.net/manual/en/language.oop5.basic.php के गुणों का संदर्भ देने के लिए उपयोग किया जाता है। – mario

उत्तर

1

मैं सिर्फ एक महान पोस्ट पढ़ के बारे में सामान्य रूप में यह और कक्षाओं $: http://query7.com/using-this-in-php

पीएचपी में, कीवर्ड "$ इस" एक वर्ग के एक आत्म संदर्भ के रूप में प्रयोग किया जाता है और उदाहरण के लिए आप इन गुणों और विधियों को के रूप में कॉल करने और उपयोग करने के लिए उपयोग कर सकते हैं।

7

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

class Hello { 
    public $data = 'hello'; 
    function hi() { 
    $this->data = 'hi'; 
    } 
} 

आप इस वर्ग के एक से अधिक बार का दृष्टांत सकते हैं, लेकिन $data केवल उन वस्तुओं में hi में बदल जायेगा जहां समारोह कहा जाता है:

$one = new Hello; 
$two = new Hello; 
$two->hi(); 

echo $one->data, "\n", $two->data; 
+2

निश्चित रूप से यह '$ this' के सामान्य अर्थ पर एक अच्छा ट्यूटोरियल है लेकिन विशेष रूप से कोडनिर्देशक को संबोधित नहीं करता है, यही सवाल है। – jondavidjohn

6

$this नहीं है कोडइग्निटर से कुछ, लेकिन PHP से। $this वर्तमान वस्तु को संदर्भित करता है।

जब भी आप इस तरह एक उदाहरण बनाने के लिए:

$something = new SomeClass(); 

फिर $this उदाहरण है कि इस मामले $something में SomeClass से बनाया जाता है, को दर्शाता है। जब भी आप कक्षा में हों, तो आप इस उदाहरण के संदर्भ में $this का उपयोग कर सकते हैं। तो:

class SomeClass { 

    public $stuff = 'Some stuff'; 

    public function doStuff() 
    { 
    $this->stuff; 
    } 

} 
+0

धन्यवाद, मूल रूप से यह सी ++ के समान है कि यह .stuff() – sqlmole

+0

मुझे सी ++ के साथ कोई अनुभव नहीं है, लेकिन हां, यह संभवतः 'इस' को लागू करता है। – Luwe

4

CodeIgniter के संदर्भ में:
आप देखेंगे कि CodeIgniter में प्रत्येक नियंत्रक आधार नियंत्रक वर्ग फैली हुई है। एक नियंत्रक में $this का उपयोग करके आप अपने नियंत्रक में परिभाषित सब कुछ तक पहुंच सकते हैं, साथ ही मूल नियंत्रक से विरासत में प्राप्त किया जाता है। $this->load, $this->uri, आदि

अगर मैं सही ढंग से याद है, एक दृश्य में PHP कोड में चलाया जाता है -

उपयोग आप $this से बाहर निकलने देंगे से अधिकांश तरीकों जो आधार वर्ग आप के लिए लोड होते ही बुला शामिल नियंत्रक का संदर्भ, इसलिए आपको वहां से $this के साथ नियंत्रक ऑब्जेक्ट तक पहुंच होगी।

+0

क्या होगा यदि हम '$ यह' नहीं लिखेंगे तो यह PHP में काम करेगा ??? सी ++ में इसके काम के रूप में ?? हम किसी भी डेटा सदस्य को 'इस' के साथ या बिना' के 'के साथ लिख सकते हैं साथ ही सी ++ में हम PHP में कर सकते हैं ???? –

+0

@ बिलालमैक्सोड - नहीं, PHP उस वाक्यविन्यास का समर्थन नहीं करता है। –

17

वास्तव में जवाब अपने प्रश्न के लिए, $this वास्तव में सिंगलटन Codeigniter उदाहरण का प्रतिनिधित्व करता है (जो वास्तव में नियंत्रक वस्तु है)।

उदाहरण के लिए जब आप पुस्तकालय/मॉडल लोड करते हैं, तो आप उन्हें इस उदाहरण से जोड़ रहे हैं ताकि आप उन्हें इस उदाहरण की संपत्ति के रूप में संदर्भित कर सकें।

कोडिनेटर में इस उदाहरण को प्राप्त करने का एक और तरीका get_instance() फ़ंक्शन है जिसका उपयोग आप पोर्टेबल पुस्तकालयों के निर्माण के दौरान करते हैं।

0

यह एक वर्ग के एक उदाहरण को संदर्भित करने का तरीका है, जैसा कि कई अन्य ऑब्जेक्ट उन्मुख भाषाओं के समान है। PHP दस्तावेज़ों से: छद्म-परिवर्तनीय $ यह तब उपलब्ध होता है जब ऑब्जेक्ट संदर्भ में किसी विधि को कॉल किया जाता है। ... $ यह मुख्य रूप से '$ this`' के परिचय के लिए कक्षा

+0

यह 6 साल पहले इस प्रश्न के कई उत्तरों के लिए कुछ भी नहीं जोड़ता है ... –

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