问题标签 [splobjectstorage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1619 浏览

php - 使用 SplObjectStorage 作为数据映射,可以使用可变数组作为数据吗?

在以下代码中:

我希望$storage[$fooA]1,它是。我也希望$storage[$fooB]array('test'),但事实并非如此。这也触发了一条通知,上面写着“间接修改 SplObjectStorage 的重载元素对...没有影响”

我认为发生这种情况是因为ArrayAccessin的实现SplObjectStorage不会通过引用返回值。

有什么方法可以SplObjectStorage用作键是对象而值是可变数组的数据映射?做这种工作还有其他可行的选择吗?

0 投票
1 回答
1086 浏览

php - SplObjectStorage::contains 和 SplObjectStorage::offsetExists 有什么区别?

PHP 文档不是很明确,只声明:

SplObjectStorage::offsetExists 检查存储中是否存在对象。(PHP >= 5.3.0)

SplObjectStorage::contains 检查存储是否包含提供的对象。(PHP >= 5.1.0)

这对我来说几乎是一样的。

问题:除了 offsetExists 仅在 5.3.0 中可用之外,两者之间有什么区别?


我进行的小测试...

输出:

0 投票
1 回答
678 浏览

php - PHP SplObjectStorage 附加并推送到列表顶部

我有一个小情况,我正在使用 SplObjectStorage 对象,在某些时候我需要附加一个项目,但还要将它推到列表的顶部,所以当我遍历这些项目时,我会将它作为第一个对象。

IE

0 投票
1 回答
403 浏览

php - 方法声明是兼容的,但 PHP 抱怨

所以我有这个类:

这是 SplObjectStorage:

http://php.net/manual/en/class.splobjectstorage.php

如您所见,它们是相同的,但是当我实例化 JSObjectSTorage 时,出现以下错误:

严格标准:MOWAFW\Core\Type\JavaScript\JSObjectStorage::addAll() 的声明应与 /Users/ ** /JSObjectStorage.php 175 行中的 SplObjectStorage::addAll() 的声明兼容

这发生在 removeAll() 和 removeAllExcept() 上。

有任何想法吗?!


我正在使用:

0 投票
1 回答
310 浏览

php - SplObjectStorage 仅按实例映射

我的问题是我想按对象相等(==)而不是唯一实例进行映射。换句话说,重构它以不抛出错误并返回映射值:

编辑:另外,如果我最终需要遍历 SplObjectStorage 对象的键以通过相等性获得,我想知道一种仅散列对象/数组并简单地映射到散列的好方法。

0 投票
3 回答
1234 浏览

php - session_start() php 中的 UnexpectedValueException 失败 SPLObjectStorage 序列化

为什么UnexpectedValueException被扔进去session_start()

我有具有属性的对象SPLObjectstorage。该对象被分配给像这样的会话

我怀疑内部会话序列化面临解码问题。我将会话存储在数据库中,看起来它正在序列化objectStorage但无法解码。

示例会话数据

RolestorageSPLObjectstorage session_decode()上面字符串的扩展是否也返回false任何想法?

删除该roleList属性使其正确序列化。

如果我分开做

它打印string 'C:11:"RoleStorage":22:{x:i:1;N;,r:3;;m:a:0:{}}' (length=46)然后在反序列化时失败并显示相同的消息。我不知道为什么会这样。

注意:在附加对象时,RoleStorage我使用对象本身作为数据。意味着它被存储为参考。我不知道(如果)如何在serialize()内部处理这个。

0 投票
1 回答
831 浏览

php - 在 splobjectstorage 中查找数据

问候 stackoverflow 的人们,在过去的几天里,我一直在研究 websockets 和一个名为 Ratchet 的 PHP 库(它非常适合用 PHP 编写 websockets 服务器应用程序)。在 Ratchet 官方文档中,他们建议使用 SplObjectStorage(我从未听说过)来管理客户端连接对象。

在大多数服务器应用程序中,您可能需要保留有关每个客户端的一些数据(例如,在我正在尝试编写一个简单的消息传递服务器的情况下,我需要保留诸如客户端昵称之类的数据,也许还有更多),所以据我了解它,当像下面这样打开新连接时,我可以将客户端对象和包含客户端数据的数组添加到 SplObjectStorage。

但是,我不确定通过数据数组中的值(如用户昵称)从 SplObjectStorage 获取对象的最佳方法是什么,一种方法是这样的:

但我觉得有更好的方法可以做到这一点,所以任何建议都将不胜感激。

提前致谢。

0 投票
1 回答
130 浏览

php - 如何在 PHP 中将大量字符串推送到 SplObjectStorage,如果字符串存在则不推送

基本上我需要的是将一大组字符串推送到 SplObjectStorage,如果每个字符串不存在,则执行某种操作,如果确实存在,则执行其他操作。

我只在对象中得到 22222,否则它会覆盖对象。我需要两个都得到,如果它们只匹配其中一个。我需要得到我的字符串的不同值

0 投票
1 回答
95 浏览

php - PHP SplObjectStorage 无法在类中创建

是否可以将受保护的对象初始化SplObjectStorage为类中的映射?每当我尝试这个时,我似乎都会遇到错误。类似于下面的示例:

0 投票
1 回答
557 浏览

php - SplObjectStorage 的自定义迭代

我想修改迭代SPLObjectStorage对象的方式,比如先按数据(信息)排序。

因此,在一个循环中,它以数字方式从 a 到 z(使用 sort() 函数)

但是,在 SPLObjectStorage 中,无法访问数组,对吗?

是否可以这样做,因为我们无法访问对象数组?