[英]What is the difference between SplObjectStorage::contains and SplObjectStorage::offsetExists?
PHP文檔不是很明確,只說明:
SplObjectStorage :: offsetExists 檢查存儲中是否存在對象。 (PHP> = 5.3.0)
SplObjectStorage :: contains 檢查存儲是否包含提供的對象。 (PHP> = 5.1.0)
這對我來說幾乎是一回事。
問題:除了offsetExists僅在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
它們都完全一樣。
offsetExists
被定義為contains
的方法別名 ,僅為了符合ArrayAccess
接口而contains
在內。
您可以在源中SPL_MA
正在使用SPL_MA
(方法別名),以及還有其他幾個別名設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.