2012-03-23 10 views
5

मैंने वैल्यू ऑब्जेक्ट्स के सी # उदाहरणों को पढ़ा है, और मैं समझता हूं कि यह एक "ऑब्जेक्ट" है जिसे इसकी कीमतों से पहचाना जाता है। यदि कोई मान बदलता है, तो ऑब्जेक्ट "नया" होता है।PHP में वैल्यू ऑब्जेक्ट का उदाहरण क्या है?

हालांकि, यह PHP की बात आने पर समझ में नहीं आता है ... या तो, या मैं कनेक्शन नहीं बना रहा हूं।

क्या एक मूल्य वस्तु सिर्फ एक स्ट्रिंग है?

+0

PHP में सब कुछ एक वस्तु नहीं है। –

+0

मुझे एहसास है कि। मैं बस उन कुछ ट्यूटोरियल्स को समझने की कोशिश कर रहा हूं जिन्हें मैं पढ़ रहा हूं जो वैल्यू ऑब्जेक्ट्स की बात करते हैं। – johnnietheblack

+0

लेकिन PHP में सब कुछ एक वस्तु नहीं है, जिसके परिणामस्वरूप तुलना अमान्य है। –

उत्तर

17

इसे संदर्भ में रखने के लिए, कई ओओ भाषाओं में, वस्तुओं की उनकी पहचान से तुलना की जाती है। स्यूडोकोड में:

bar = new Foo 
baz = new Foo 

bar == baz // false 

हालांकि दोनों वस्तुओं मूल रूप से एक ही हैं अगर तुम सिर्फ अपने मूल्यों को देखो, वे समान हो सकता है, क्योंकि वे अलग उदाहरण हैं माना नहीं कर रहे हैं। प्रदर्शित करने के लिए:

bar = new Foo 
baz = bar 

bar == baz // true 

अब:

कंप्यूटर विज्ञान में, एक मूल्य वस्तु पैसे या कोई समय अवधि, जिसका समानता पहचान के आधार पर नहीं किया गया है की तरह, एक छोटी सी साधारण वस्तु है।

http://en.wikipedia.org/wiki/Value_object

यह "मूल्य वस्तुओं" का एक प्रदर्शन होगा:

address1 = new Address('Main street 42') 
address2 = new Address('Main street 42') 

address1 == address2 // true 

क्योंकि मूल्यों के समान हैं, दोनों वस्तुओं बराबर माना जाता है, भले ही वे अलग उदाहरणों कर रहे हैं।

PHP में "मान ऑब्जेक्ट्स" की एक अलग अवधारणा नहीं है, इसमें केवल एक प्रकार का ऑब्जेक्ट है। इसकी तुलना ऑपरेटर उस भेद हालांकि बना सकते हैं:

तुलना ऑपरेटर (==) का उपयोग कर, वस्तु चर एक सरल तरीके से तुलना की जाती है, अर्थात्: दो वस्तु उदाहरणों बराबर अगर वे एक ही गुण और मान रहे हैं, और एक ही कक्षा के उदाहरण हैं।

http://www.php.net/manual/en/language.oop5.object-comparison.php

उदा .:

$address1 = new Address('Main street 42'); 
$address2 = new Address('Main street 42'); 

$address1 == $address2; // true  equal... 
$address1 === $address2; // false ...but not identical 
+0

+1 बहुत अच्छी तरह से लिखित और सूचनात्मक उत्तर – max

+0

के लिए जो मुझे चाहिए वह है। धन्यवाद! – johnnietheblack

+0

@johnnietheblack: ध्यान दें कि सी # में भेद * * मुख्य रूप से तुलना विधि बराबर() पर रहता है, जो System.Object पर पहचान के लिए तुलना करता है, लेकिन कौन सी System.ValueType सामग्री की तुलना करने के लिए ओवरराइड करता है। –

0

पीएचपी मूल्य की वस्तुओं के लिए इस्तेमाल किया, लेकिन वह PHP4 में वापस आ गया था। http://3v4l.org/ghI8G