$instance2
वस्तु परीक्षण करने के लिए पहचानकर्ता की एक प्रति है:
$a = new stdClass();
$a->name = "A";
$b = new stdClass();
$b->name = "B";
// $x is a copy of the object identifier in $a
$x = $a;
// $y is a reference to $a
$y = &$a;
// this will not affect $a
$x = $b;
echo $a->name; // 'A'
// this will affect $a
$y = $b;
echo $a->name; // 'B'
भी क्यों (एम्परसेंड) संदर्भ के उपयोग से बचा जाना चाहिए पर यह लेख देखें। इसलिए, इसमें $instance1
जैसा ही है। $instance3
में $instance1
का संदर्भ शामिल है। अंतर निम्नलिखित होगा:
$instance1 = new Test();
$instance2 = $instance1;
$instance3 = & $instance1;
var_dump($instance1 instanceof Test); // True
var_dump($instance2 instanceof Test); // True
var_dump($instance3 instanceof Test); // True
$instance3 = new AnotherTest();
var_dump($instance1 instanceof AnotherTest); // True
var_dump($instance2 instanceof AnotherTest); // False
var_dump($instance3 instanceof AnotherTest); // True
अगर $instance1
$instance3
के बजाय बदल गया था एक ही आउटपुट लौटा दिया जाएगा।
लेकिन अगर हम निम्नलिखित किया:
$instance1 = new Test();
$instance2 = $instance1;
$instance3 = & $instance1;
$instance2 = new AnotherTest();
var_dump($instance1 instanceof AnotherTest); // False
var_dump($instance2 instanceof AnotherTest); // True
var_dump($instance3 instanceof AnotherTest); // False
तो:
एक चर जो का संशोधन संदर्भ (&
संकार्य का प्रयोग करके) द्वारा बनाई द्वारा पारित किया गया या चर यह संदर्भ देता है जो करने के लिए की , दोनों को संशोधित करता है, जबकि एक प्रतिलिपि चर के संशोधन केवल दिए गए चर को संशोधित करता है।
फिर भी, आप याद रखना चाहिए कि $instance1
क्या रहता है, वस्तु का एक पहचानकर्ता है तो:
$instance1 = new StdClass();
$instance2 = $instance1;
$instance1->my_property = 1;
var_dump($instance2); // Output: 1
आशा है कि यह अब स्पष्ट है।
आप उदाहरण समझते हैं लेकिन आपको PHP में 'पॉइंटर' शब्द का उपयोग नहीं करना चाहिए। –
मैंने "poitner" शब्द का उपयोग किया क्योंकि उनके बीच मुख्य अंतर ठीक है कि इंजन उन्हें कैसे संभालता है ... मुझे नहीं पता था कि इसे अलग तरीके से कैसे वाक्यांशित किया जाए। – Lumbendil
सही शब्द वस्तु पहचानकर्ता है: http://php.net/manual/en/language.oop5.references.php –