問題タブ [spl]

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 投票する
7 に答える
5885 参照

php - RecursiveArrayIterator の使用中に配列のキーと値を変更するにはどうすればよいですか?

私はここで何かばかげたことをしていると思いますが、SPL の単純な問題のように見えるものに混乱しています。

RecursiveArrayIterator / RecursiveIteratorIteratorを使用して、配列の内容 (この例の値) を変更するにはどうすればよいですか?

次のテスト コードを使用すると、 getInnerIterator()offsetSet( )を使用してループ内で値を変更し、ループ内で変更された配列をダンプできます。

しかし、ループを離れて反復子から配列をダンプすると、元の値に戻ります。何が起こっていますか?

0 投票する
2 に答える
198 参照

php - __オートロードが混同?

__autoloader()私は多くの顧客がいるサーバーを持っています。開発するときに、たとえばファイルを含む関数がある init.php を含めdir_name(__FILE__)."/classes/".$classNameます。

しかし、昨日、サーバーが特定のクラスを見つけることができなかったことがわかりました.apacheで再起動すると、再び機能しました。

すべての顧客は、この独自の init.php を持っています... (したがって、同じサーバー上に多くの __autoloads があります)

私はいくつかのテストを行っていないので、問題を再現する前に誰かが私の質問に答えてくれることを願っていますが、同時に 2 つ以上のリクエストを受け取ったときに、php が間違ったオートロード機能を実行する可能性があると思いますか?

spl_autoload_register は解決策ですか?

いくつかのアイデアやブレインストーミングに感謝します。

0 投票する
3 に答える
4377 参照

php - PHP IteratorIteratorクラスはどのように機能しますか?

IteratorIteratorクラスが実際に行うことについて頭を悩ませることができないかもしれないので試してみてください。クラスはTraversableを実装できるので、エンジンはforeach使用してループできることを認識し、IteratorIteratorはTraversableをIteratorに変換することになっていることを理解していますが、私はその方法を一生理解できません。

たとえば、PDOStatementクラスを取り上げます。PDOStatementでの反復を可能にするために、標準のIteratorメソッド(next、key、rewindなど)をどのように実装しますか?

質問が不明な場合は申し訳ありませんが、このクラスの正確な理由を把握するのに苦労しており、そのドキュメントは不足しています。

ありがとう、

意思

更新:phptファイルを調べてみると、IteratorIteratorを使用するテストが1つ見つかりました。

期待される出力は次のとおりです。

IteratorIteratorコンストラクトが$root->childを引数として取る方法と、子要素を反復処理する方法については、実際にはフォローしていません。

0 投票する
2 に答える
7820 参照

php - DirectoryIteratorを使用したファイルの並べ替え

lighttpd用のPHP5スクリプトを一覧表示するディレクトリを作成しています。特定のディレクトリに、直接のサブディレクトリとファイル(情報を含む)を一覧表示できるようにしたいと思います。

簡単に検索したところ、DirectoryIteratorは私の友達のようです。

しかし、ファイル名、日付、mime-typesなどでファイルを並べ替えることができるようにしたいと思います。

これを行う方法(ArrayObject / ArrayIteratorを使用しますか?)?

ありがとう

0 投票する
5 に答える
3312 参照

php - SplObjectStorage は String では機能しません。どうすればよいですか?

SplObjectStorage を使用して一連の固有のものを追跡することを提案した人がいます。文字列では機能しないことを除けば、素晴らしいです。「SplObjectStorage::attach() は、パラメーター 1 がオブジェクトであると想定しています。59 行目の fback.php で指定された文字列です」というエラーが表示されます。

何か案は?

0 投票する
2 に答える
1417 参照

php - SPLFileObject next()の動作

PHPでは、SPLFileObjectを使用すると、ファイルをイテレータとして扱うことができます。

しかし、私には理解できない行動があります。オブジェクトでnext()を呼び出すと、key()の値がインクリメントされますが、反復ごとにcurrent()を呼び出さない限り、ファイル内の行は進みません。SPLのドキュメントには、key()が現在の行番号を返すと記載されています。

再現するコード:

test.txt

iterator.php

私が見ることができることから、次はこのセクションで働いていません。私がこのようにそれを使うならば、それは前進するでしょう:

iterator_fix.php

これがバグなのか、それとも意図された動作なのか、誰か説明してもらえますか?

グーグルとPHPのフォーラムを見ましたが、何も起こりませんでした。前もって感謝します。

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

php - PHP array_key_exists() と SPL ArrayAccess インターフェイス: 互換性がありませんか?

配列をオブジェクトに格納できるように、単純なコレクション クラスを作成しました。

問題:このオブジェクトで array_key_exists() を呼び出すと、この関数が SPL によって処理されていないように見えるため、常に "false" が返されます。これを回避する方法はありますか?

コンセプトの証明:

0 投票する
3 に答える
6395 参照

php - SPLオートローダーで例外をスローしますか?

失敗した場合にPHPのSPLオートローダーから例外をスローする方法はありますか?PHP5.2.11では動作しないようです。

上記のコードが呼び出されても、例外の兆候はありません。代わりに、標準の「致命的なエラー:クラス'foobarDomain'がblaに見つかりません」が表示されます。そして、スクリプトの実行は終了します。

0 投票する
2 に答える
1722 参照

php - PHP の array_search でオブジェクトを検索可能にする

PHP ネイティブ メソッドで検索できるように、PHP でクラスを作成したいと考えていますarray_search。現在、私のクラスは and を実装IteratorAggregateCountableているため、それを実行できますforeach

他にもいくつかの SPL インターフェース (SeekableIterator、ArrayAccess など) があり、おそらく適合すると思われますが、誰かが既にこれを行っているかどうか、どのインターフェースが私がやりたいことに適しているかを知りたいです。

ありがとうございました