जवाबों:
यह वर्तमान ऑब्जेक्ट का संदर्भ है, यह आमतौर पर ऑब्जेक्ट ओरिएंटेड कोड में सबसे अधिक उपयोग किया जाता है।
उदाहरण:
<?php
class Person {
public $name;
function __construct( $name ) {
$this->name = $name;
}
};
$jack = new Person('Jack');
echo $jack->name;
यह 'जैक' स्ट्रिंग को बनाए गए ऑब्जेक्ट की संपत्ति के रूप में संग्रहीत करता है।
$this
PHP में चर के बारे में जानने का सबसे अच्छा तरीका है कि इसे विभिन्न संदर्भों में दुभाषिया के खिलाफ आज़माया जाए:print isset($this); //true, $this exists
print gettype($this); //Object, $this is an object
print is_array($this); //false, $this isn't an array
print get_object_vars($this); //true, $this's variables are an array
print is_object($this); //true, $this is still an object
print get_class($this); //YourProject\YourFile\YourClass
print get_parent_class($this); //YourBundle\YourStuff\YourParentClass
print gettype($this->container); //object
print_r($this); //delicious data dump of $this
print $this->yourvariable //access $this variable with ->
इसलिए $this
छद्म चर में करंट ऑब्जेक्ट की विधि और गुण होते हैं। ऐसी चीज उपयोगी है क्योंकि यह आपको कक्षा के अंदर सभी सदस्य चर और सदस्य विधियों का उपयोग करने देती है। उदाहरण के लिए:
Class Dog{
public $my_member_variable; //member variable
function normal_method_inside_Dog() { //member method
//Assign data to member variable from inside the member method
$this->my_member_variable = "whatever";
//Get data from member variable from inside the member method.
print $this->my_member_variable;
}
}
$this
एक PHP का संदर्भ है जो Object
आपके लिए दुभाषिया द्वारा बनाया गया था, जिसमें चर की एक सरणी होती है।
यदि आप $this
किसी सामान्य वर्ग में एक सामान्य विधि के अंदर कॉल करते हैं , $this
तो ऑब्जेक्ट (वर्ग) को वह विधि लौटाता है जो उस पद्धति से संबंधित है।
$this
यदि संदर्भ का कोई मूल उद्देश्य नहीं है, तो अपरिभाषित होना संभव है ।
php.net के पास PHP ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के बारे में बात करने वाला एक बड़ा पेज है और यह $this
संदर्भ के आधार पर कैसे व्यवहार करता है।
https://www.php.net/manual/en/language.oop5.basic.php
मैं इसके पुराने प्रश्न को जानता हूं, वैसे भी इस $ के बारे में एक और सटीक व्याख्या । $ यह मुख्य रूप से एक वर्ग के गुणों को संदर्भित करने के लिए उपयोग किया जाता है।
उदाहरण:
Class A
{
public $myname; //this is a member variable of this class
function callme() {
$myname = 'function variable';
$this->myname = 'Member variable';
echo $myname; //prints function variable
echo $this->myname; //prints member variable
}
}
उत्पादन:
function variable
member variable
यह अपने भीतर से एक वर्ग के उदाहरण को संदर्भित करने का तरीका है, कई अन्य ऑब्जेक्ट उन्मुख भाषाओं के समान है।
से पीएचपी डॉक्स :
छद्म-चर $ यह तब उपलब्ध होता है जब किसी वस्तु के संदर्भ में कोई विधि कहा जाता है। $ यह कॉलिंग ऑब्जेक्ट का संदर्भ है (आमतौर पर वह वस्तु जिसके लिए विधि संबंधित है, लेकिन संभवतः एक अन्य वस्तु, यदि विधि को द्वितीयक वस्तु के संदर्भ से वैधानिक रूप से कहा जाता है)।
देखते हैं कि क्या होता है अगर हम $ का उपयोग नहीं करेंगे और निम्न कोड स्निपेट के साथ एक ही नाम के साथ उदाहरण चर और निर्माण तर्क देने की कोशिश करेंगे
<?php
class Student {
public $name;
function __construct( $name ) {
$name = $name;
}
};
$tom = new Student('Tom');
echo $tom->name;
?>
यह कुछ भी नहीं है लेकिन
<?php
class Student {
public $name;
function __construct( $name ) {
$this->name = $name; // Using 'this' to access the student's name
}
};
$tom = new Student('Tom');
echo $tom->name;
?>
यह गूँज 'टॉम'
$this
दूसरे कंस्ट्रक्टर में उपयोग किया।
$name
टॉम है, लेकिन फ़ंक्शन के बाहर, इसका कोई मूल्य नहीं है, क्योंकि इसका दायरा फ़ंक्शन तक सीमित है।
जब आप एक वर्ग बनाते हैं तो आपके पास (कई मामलों में) चर और तरीके (उर्फ) कार्य होते हैं। यह $ उन उदाहरण चर को एक्सेस करता है ताकि आपके कार्य उन चर को ले सकें और वे कर सकें जो आपको उनके साथ चाहिए।
पदक के उदाहरण का एक और संस्करण:
class Person {
protected $name; //can't be accessed from outside the class
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
// this line creates an instance of the class Person setting "Jack" as $name.
// __construct() gets executed when you declare it within the class.
$jack = new Person("Jack");
echo $jack->getName();
Output:
Jack
$this
है बुला ऑब्जेक्ट के संदर्भ (आमतौर पर जिस वस्तु को विधि के अंतर्गत आता है, लेकिन संभवतः किसी अन्य वस्तु, अगर विधि एक माध्यमिक वस्तु के संदर्भ से स्थिर कहा जाता है)।
$ यह एक विशेष चर है और यह उसी वस्तु को संदर्भित करता है। अपने आप।
यह वास्तव में वर्तमान वर्ग का उदाहरण है
यहाँ एक उदाहरण है जो उपरोक्त कथन को स्पष्ट करेगा
<?php
class Books {
/* Member variables */
var $price;
var $title;
/* Member functions */
function setPrice($par){
$this->price = $par;
}
function getPrice(){
echo $this->price ."<br/>";
}
function setTitle($par){
$this->title = $par;
}
function getTitle(){
echo $this->title ." <br/>";
}
}
?>
यह लंबी विस्तृत व्याख्या है। मुझे उम्मीद है कि इससे शुरुआती लोगों को मदद मिलेगी। मैं इसे बहुत सरल बनाऊंगा।
सबसे पहले, एक वर्ग बनाते हैं
<?php
class Class1
{
}
?>
यदि आप केवल php कोड का उपयोग कर रहे हैं, तो आप php समापन टैग को छोड़ सकते हैं ।
अब चलो गुणों और एक विधि को अंदर जोड़ते हैं Class1
।
<?php
class Class1
{
public $property1 = "I am property 1";
public $property2 = "I am property 2";
public function Method1()
{
return "I am Method 1";
}
}
संपत्ति सिर्फ एक साधारण चर है, लेकिन हम इसे एक वर्ग के अंदर cuz नाम संपत्ति देते हैं।
विधि सिर्फ एक सरल कार्य है, लेकिन हम कहते हैं कि विधि एक वर्ग के अंदर भी cuz है।
public
अर्थ है कि कीवर्ड कि विधि या एक संपत्ति लिपि में कहीं भी पहुँचा जा सकता है।
अब, हम गुणों और विधि का उपयोग कैसे कर सकते हैं Class1
?
इसका उत्तर एक उदाहरण या एक वस्तु बना रहा है, एक वस्तु को कक्षा की एक प्रति के रूप में सोचें।
<?php
class Class1
{
public $property1 = "I am property 1";
public $property2 = "I am property 2";
public function Method1()
{
return "I am Method 1";
}
}
$object1 = new Class1;
var_dump($object1);
हमने एक ऑब्जेक्ट बनाया, जो कि इसकी सभी सामग्रियों $object1
के Class1
साथ एक कॉपी है । और हमने $object1
उपयोग की सभी सामग्री को डंप कर दिया var_dump()
।
यह आपको देगा
object(Class1)#1 (2) { ["property1"]=> string(15) "I am property 1" ["property2"]=> string(15) "I am property 2" }
तो सभी सामग्री में Class1
हैं $object1
, को छोड़कर Method1
, मुझे नहीं पता कि क्यों वस्तुओं डंपिंग करते समय तरीके नहीं दिखाते हैं।
अब क्या होगा अगर हम $property1
केवल एक्सेस करना चाहते हैं । इसका सरल, हम करते हैं var_dump($object1->property1);
, हमने बस जोड़ा ->property1
, हमने इसे इंगित किया।
हम भी पहुँच सकते हैं Method1()
, हम करते हैं var_dump($object1->Method1());
।
अब मान लीजिए कि मैं $property1
अंदर से एक्सेस करना चाहता हूं Method1()
, तो मैं यह करूंगा
<?php
class Class1
{
public $property1 = "I am property 1";
public $property2 = "I am property 2";
public function Method1()
{
$object2 = new Class1;
return $object2->property1;
}
}
$object1 = new Class1;
var_dump($object1->Method1());
हमने बनाया $object2 = new Class1;
जो एक नई प्रति है Class1
या हम एक उदाहरण कह सकते हैं। फिर हम की ओर इशारा property1
से$object2
return $object2->property1;
यह string(15) "I am property 1"
ब्राउज़र में प्रिंट होगा ।
अब अंदर ऐसा करने के बजाय Method1()
$object2 = new Class1;
return $object2->property1;
हम ऐसा करते हैं
return $this->property1;
$this
वस्तु वर्ग खुद को संदर्भित करने के वर्ग के अंदर किया जाता है।
यह नई वस्तु बनाने और फिर इसे इस तरह वापस करने का एक विकल्प है
$object2 = new Class1;
return $object2->property1;
एक और उदाहरण
<?php
class Class1
{
public $property1 = 119;
public $property2 = 666;
public $result;
public function Method1()
{
$this->result = $this->property1 + $this->property2;
return $this->result;
}
}
$object1 = new Class1;
var_dump($object1->Method1());
हमने पूर्णांक वाले 2 गुण बनाए और फिर हमने उन्हें जोड़ा और परिणाम को अंदर रखा $this->result
।
मत भूलना
$this->property1
= $property1
=119
उनका वही मूल्य है .. आदि
मुझे आशा है कि विचार की व्याख्या करता है।
वीडियो की यह श्रृंखला आपको OOP में बहुत मदद करेगी
https://www.youtube.com/playlist?list=PLe30vg_FG4OSEHH6bRF8FrA7wmoAMUZLv
यह वर्तमान वर्ग के उदाहरण को संदर्भित करता है, जैसा कि मेडर ने कहा।
PHP डॉक्स देखें । इसे पहले उदाहरण के तहत समझाया गया है।