問題タブ [php-closures]

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 に答える
347 参照

php - Silex サービス - $app パラメータまたは "use ($app)" ステートメント?

Silex アプリケーションでサービスを定義する場合、メイン コンテナー (アプリケーション) がパラメーターとして渡されることを期待するか、"use ($app)" ステートメントを使用して現在のスコープから取得することができます。

http://silex.sensiolabs.org/doc/services.htmlの公式ドキュメントには、次のスニペットがあります。

しかし、それは次のように同じように書くことができます

私はそのようなコードの例をたくさん見てきました。それは単なる個人的な好みですか、それともパフォーマンス、メモリ使用量、コードの分離など、どちらかが他のものより優れているのでしょうか?


編集: 「使用」とパラメーターと単純な関数のパフォーマンス比較を実行しました:

最初のものは最も遅いですが、全体の差は 25% 未満です。また、あらゆるマイクロ最適化と同様に、これが数万回行われた場合にのみ顕著になります。これは、最も速いものと最も遅いものの時間差が約 1/10,000,000 秒 (100 万回の反復で 0.05 秒) であるためです。

したがって、パフォーマンスの違いは考慮しないでください。

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

php - Closure を含むクラスをどのように比較しますか?

では、 を含むクラスをどのように比較しますClosureか? できないようです。

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

php - PHPでクロージャーを検査するには?

Closure が渡される関数があります。クロージャーが派生したメソッドの名前を知りたいです。print_r を呼び出すと、次のように出力されます。

そのリスナーの値にアクセスするにはどうすればよいですか? ->static, ::$static, getStatic() を試しましたが、値を取得する方法が思いつきません。

現在、私の計画は、出力バッファリングを使用して var_dump からの出力をキャプチャすることです。これには print_r を使用できません。クロージャーには自身への参照とそれ自体を参照するオブジェクトが含まれており、print_r は再帰を処理するのに時間がかかるためです。出力に必要な値が含まれていないため、var_export も使用できません。だから、これは私の解決策です:

これは恐ろしいことです。これを行う別の方法はありますか?多分反射を使用していますか?

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

php - PHPクロージャーから呼び出し元スコープ変数を更新する方法はありますか

usephp クロージャーを使用したキーワードは、厳選された変数のスコープをクロージャーに拡張するための非常に明確な方法です。

クロージャーから呼び出し元関数スコープ内の変数の値を更新する必要がある場合、方法はありますか?

ここでは常に 0 を取得します。これを修正するにはどうすればよいですか?

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

php - パラメーターを渡すときの PHP Altorouter の予期しない動作

設定

この URL にアクセスしています: <host>/render/z63034/RBLR/GLZB

私のURLパターンは次のとおり/render/[a:title]/[a:bpFrom]/[a:bpTo]です。

私のルートは次のように追加されます:

呼び出しは次のようになります。

私のindex.php(すべてのリクエストがルーティングされる場所)では、予想される結果var_dump()$match['params']得られます:

私のrender.php(含まれている)では、予想外の結果var_dump()$params得られます

質問

渡す配列の最初の要素だけがcall_user_func_array実際に渡されるのはなぜですか (配列としてではなく、値自体として)。

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

laravel-5 - Laravel コマンド、Pthreads、クロージャ

特定のプロセスを複数のスレッドで実行する必要があります。php の拡​​張機能である pthreads について学びました。

たとえば、Laravel 以外の単純なスクリプトは問題なく動作し、結果は気に入りました。私は Laravel に移行することに決め、問題に直面しました。もちろん、私はグーグルで検索し、スタックオーバーフローでいくつかの質問を見つけ、そこで拡張機能の作成者に答えました。しかし、私は彼の答えを助けませんでした。

Answered Question 拡張機能の作成者。

クラス App\Commands\QuestionsParserCommand があります。内部で App\My\Questions\QuestionsParser クラスのインスタンスを作成し、init() メソッドを呼び出します。次に、メソッド init() のコード:

クラス ParserWorkers は Worker から継承されますが、空のメソッド run() があります。

その結果、スクリプトを実行すると、php のログに次のメッセージが表示されます。

情報: Laravel 5.2.43、php 7.0.8、Windows

ありがとうございました!