作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
PHP 文档不是很明确,仅指出:
SplObjectStorage::offsetExists 检查存储中是否存在对象。 (PHP >= 5.3.0)
SplObjectStorage::contains 检查存储是否包含提供的对象。 (PHP >= 5.1.0)
这对我来说几乎是同一件事。
问题:除了 offsetExists 仅在 5.3.0 中可用之外,两者之间还有什么区别?
<小时/>我进行的小测试...
$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
接口(interface).
您可以see for yourself in the source正在使用 SPL_MA
(方法别名),并且还设置了几个其他别名。
关于php - SplObjectStorage::contains 和 SplObjectStorage::offsetExists 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11983042/
PHP 文档不是很明确,仅指出: SplObjectStorage::offsetExists 检查存储中是否存在对象。 (PHP >= 5.3.0) SplObjectStorage::contai
我是一名优秀的程序员,十分优秀!