2012-08-16 22 views
11

पीएचपी प्रलेखन बहुत स्पष्ट नहीं है और केवल कहा गया है कि:SplObjectStorage :: के बीच क्या अंतर है और SplObjectStorage :: offsetExists?

एक वस्तु भंडारण में मौजूद है SplObjectStorage :: offsetExistsजांचता है कि क्या। (PHP> = 5.3.0)

SplObjectStorage ::जांच करें कि क्या भंडारण प्रदान की वस्तु में शामिल होता है। (PHP> = 5.1.0)

जो मुझे बहुत कुछ लगता है।

प्रश्न: ऑफ़सेट एक्साइस्ट के अलावा केवल 5.3.0 में उपलब्ध है, 2 के बीच क्या अंतर है?


छोटे से परीक्षण मैं आयोजित ...

$s = new SplObjectStorage(); 
$o1 = new StdClass(); 
$o2 = new StdClass(); 
$o3 = "I'm not an object!"; 
$s->attach($o1); 

var_dump($s->contains($o1)); 
var_dump($s->offsetExists($o1)); 
echo '<br>'; 
var_dump($s->contains($o2)); 
var_dump($s->offsetExists($o2)); 
echo '<br>'; 
var_dump($s->contains($o3)); 
var_dump($s->offsetExists($o3)); 

उत्पादन:

boolean true 
boolean true 

boolean false 
boolean false 

Warning: SplObjectStorage::contains() expects parameter 1 to be object, string given in index.php on line 15 
null 

Warning: SplObjectStorage::offsetExists() expects parameter 1 to be object, string given in index.php on line 16 
null 

उत्तर

12

वे दोनों बिल्कुल एक जैसे हैं।

offsetExists एक विधि उर्फ ​​contains की के रूप में परिभाषित किया गया है और केवल ArrayAccess इंटरफेस के अनुपालन के लिए शामिल किया गया है।

आप see for yourself in the sourceSPL_MA (विधि उपनाम) का उपयोग किया जा रहा है, और यह भी कि कुछ अन्य उपनाम स्थापित किए जा रहे हैं।

  • offsetExists =
  • offsetSet = देते
  • offsetUnset = अलग
+0

स्रोत में गोता करने के लिए धन्यवाद शामिल हैं। – PeeHaa

+0

ग्रेट, बहुत बहुत धन्यवाद! – Tivie