問題タブ [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のオーバーロードされた要素の間接的な変更は...に影響を与えません」という通知もトリガーされます。

ArrayAccessこれは、 inの実装が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でのみ利用可能であることを除けば、2つの違いは何ですか?


私が行った小さなテスト...

出力:

0 投票する
1 に答える
678 参照

php - PHP SplObjectStorageをアタッチして、リストの一番上にプッシュします

少し状況があります。SplObjectStorageオブジェクトを使用していて、ある時点でアイテムをアタッチする必要がありますが、リストの一番上にプッシュする必要があるため、アイテムを反復処理すると、最初のオブジェクトとして取得されます。

すなわち

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デコードできません。

サンプル セッション データ

Rolestorage上記の文字列の拡張もアイデアSPLObjectstorage session_decode()を返しますか?false

属性を削除すると、roleList適切にシリアル化されます。

別々にしたら

シリアルstring 'C:11:"RoleStorage":22:{x:i:1;N;,r:3;;m:a:0:{}}' (length=46)化解除中に同じメッセージが表示されて失敗します。なぜこれが起こっているのかわかりません。

注: オブジェクトをRoleStorageにアタッチする際に、オブジェクト自体をデータとして使用しました。参照として保存されていることを意味します。serialize()(if) がこれを内部的に処理する方法がわかりません。

0 投票する
1 に答える
831 参照

php - splobjectstorage 内のデータの検索

ここ数日、私は websockets と、Ratchet と呼ばれる PHP ライブラリ (PHP で websockets サーバー アプリケーションを作成するのに理想的です) について調べてきました。Ratchet の公式ドキュメントでは、クライアント接続オブジェクトの管理に SplObjectStorage (私は聞いたことがありません) を使用することを推奨しています。

ほとんどのサーバーアプリケーションでは、おそらく各クライアントに関するデータを保持する必要があります(たとえば、単純なメッセージングサーバーの作成を実験している私の場合、クライアントのニックネームなどのデータを保持する必要があります)ので、私が理解しているように以下のように、新しい接続が開かれたときに、クライアント オブジェクトとクライアント データを含む配列を SplObjectStorage に追加できます。

ただし、データ配列の値 (ユーザーのニックネームなど) によって SplObjectStorage からオブジェクトを取得する最良の方法が何であるかはわかりません。1 つの方法は次のようになります。

しかし、これを行うためのより良い方法があると思うので、アドバイスをいただければ幸いです。

前もって感謝します。

0 投票する
1 に答える
130 参照

php - PHP で大量の文字列セットを SplObjectStorage にプッシュする方法と、文字列が存在する場合はプッシュしない

基本的に必要なのは、大量の文字列セットを SplObjectStorage にプッシュし、各文字列が存在しない場合は何らかのアクションを実行し、存在する場合は他のアクションを実行することです。

オブジェクトで 22222 しか取得できないか、オブジェクトが上書きされます。私は両方を取得する必要があります, そしてそれらがそれらの1つだけに一致する場合. 文字列の個別の値を取得する必要があります

0 投票する
1 に答える
95 参照

php - PHP SplObjectStorage クラス内で作成できません

SplObjectStorageクラス内でマップとして保護されたものを初期化することは可能でしょうか? これを試すたびにエラーが発生しているようです。以下の例のように:

0 投票する
1 に答える
557 参照

php - SplObjectStorage のカスタム反復

最初にデータ (情報) でソートするなど、SPLObjectStorage オブジェクトを反復処理する方法を変更したいと考えています。

したがって、ループでは、数値的に a から z に移動します (sort() 関数を使用)。

しかし、SPLObjectStorage では、配列へのアクセスはありませんよね?

オブジェクトの配列にアクセスできないので、それを行うことは可能ですか??