問題タブ [psr-7]
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.
php - クライアントにストリーミング (?) されたときの画像のロードのみ
私はしばらくの間 Web アプリを作成しており、画像の提供に関していくつかの問題に遭遇しています。
私のコードは、 を使用してサーバーからファイル データを取得し、file_get_contents
Slim のRequest
オブジェクトのwrite
メソッドを使用してファイルの内容を出力し、ヘッダーを設定します。ほとんどのファイルでこれは機能しますが、大きな画像では画像の寸法のグレーのアウトラインしか表示されないことがよくあります (モバイルおよびデスクトップの Chrome でテスト済み)。でリクエストエラーが発生したERR_SPDY_PROTOCOL_ERROR
ため、HTTP 2の問題であると思いました(テストしたサーバーは、nginx構成のディレクティブで設定されたHTTP 2接続をリッスンしますlisten [port] http2
)が、応答で使用されるHTTPバージョンをダウングレードしようとしましたPSR-7のRequestInterface
やり方withProtocolVersion
で何も変わらなかった。
上記のコンテンツを使用してfile_get_contents
出力することは、物事を行うための非常に回りくどい方法であることは知っていますが、このアプリのユーザーがアップロードされたファイルの場所を任意に設定できるようにする唯一の方法です。
$filepath
これは、ユーザーが要求したファイルへのパスである私のコードの最も関連性の高い部分です。このコードは、大きな画像を除くすべてのファイルで期待どおりに機能します。
php - サーバー側リクエストの意味
サーバー側のリクエストの意味を誰かが説明してくれるかどうか疑問に思っていました。よくわからない専門用語かもしれません。サーバーからクライアントへのリクエストのように聞こえますが、それだけではないと思います。
PHP PSR7に関するものです。RequestInterface
と の両方がある理由を理解しようとしていServerRequestInterface
ます。私はそれについてどこにも細かいことを縫い合わせることができず、これら2つが1つのインターフェースにマージされない理由がわかりません.
php - Slimframework の Immutable レスポンスに問題がある
スリム フレームワーク バージョン 3 を使用して API のプロジェクトをセットアップしようとしています。誰が PSR-7 を作成し、応答オブジェクトを不変としてマークしたのかわかりません。その用途は見当たりません (私見です。説明してください私が間違っている場合)。スリムだった頃は楽だった 2. 久しぶりにスリムに戻った。
post メソッドであるルートがあり、データを取得してデータベースに保存し、応答コードとして 201 を送信しようとしています。すべての例とドキュメントは、index.php ファイル自体内の応答コードを変更する方法を示していますが、ファクトリ パターンを使用してさまざまな応答を提供しようとした応答ビルダーから変更しようとしています。問題は、応答ビルダー クラスからどの関数を呼び出しても、応答コードが常に 200 のままであることです。私は多くのフォーラムとスリムのさまざまな方法を試しましたが、それでもこれを引き出すことができませんでした. PSR 7 ルーターの実装をあきらめ、独自のルーティング ソリューションを実装することにしました。しかし、車輪の再発明は二度としないことを覚えているので、最後の試みとしてここに来ました。以下はコードです。
ルート定義
コントローラーメソッド(抽象的には設定しているだけです)
JSON ビルダー
誰かが私を正しい方向に向けることができますか?
php - PHPmailer での Slim フレームワークと電子メール テンプレートのレンダリングの問題
Slim v3 php フレームワークを使用しており、PHPMailer を統合してメールを送信しています。Twig のようなテンプレート エンジンは使用せず、プレーンな PHP を使用しています。
私の考えは、通常のページ テンプレートと同様に、メール用の HTML5 テンプレートを別のファイルに作成し、いくつかの変数を渡し、レンダリングして送信することです。一部を除いてすべてうまく機能します - レンダリングされた出力にはヘッダー情報もレンダリングされています。
これは私のコードがどのように見えるか、もちろん単純化されています
そして、これをPHPMailerで送信します
問題は、HTML コンテンツの上に、送信された電子メールに表示されるこのヘッダー データを取得することです。
これなしで出力をレンダリングする方法はありますか? 現時点では、これを削除するために str_replace() を使用していますが、これに対処するためのエレガントな組み込みのソリューションがあると思いますか?
php - Dice の使用 - Zend Diactoros と Fast Route による依存関係インジェクター
私は小さなプロジェクトに Dice(いい依存性インジェクター) を使っています。また、リクエストと nikic 高速ルートに PSR7 Zend Diactoros を使用しています。
ドキュメントの例を使用して、Twig、DB、および残りのすべてのクラスで Dice を動作させましたが、それを使用して Request $request をコントローラーに渡す方法がわかりません。
そのようなユースケースで依存性インジェクターを正しく使用する方法について、少なくとも正しい方向に向けていただければ幸いです
コントローラーコード:
アプリの初期化コード:
ルーターコード:
$this->app->di は Dice で、$handler は
1私のルートにはパラメーターがありません最初のエラーは、いくつかのパラメーターに渡していたことでした。そのため、コントローラーのインデックスメソッドを呼び出して $request を渡すルーターでこれを試しました
2これでパラメータが渡されましたが、エラーは
私はこれをすべて間違って使用していると感じています。おそらく、Di を作成する必要があるので$midEngine
、応答と要求オブジェクトを自分で作成します。
どんなアドバイスも素晴らしいでしょう。私は、ミニ フレームワークが Di を中心に展開する方法について頭を悩ませようとしています。
ありがとう、アレックス
php - Flysystem S3 リモート ファイルのダウンロードが常に破損する
私は最近、ローカルおよびリモート (具体的には S3) ファイルシステムを抽象化する目的で、既存のアプリケーションで Flysystem を使い始めました。LocalAdapter を正常に構成した私の開発環境では、すべてが正常に機能していました。ただし、S3 ファイルのダウンロードが機能しません。AWS マネジメント コンソールで S3 バケットを手動で参照することでファイルを正常にダウンロードできることを考えると、ファイルのアップロードは完全に機能していることを指摘したいと思います。そうは言っても、$filesystem
変数を初期化するコードはスキップします。
私のアプリケーションは PSR-7 アプローチを使用しています。つまり、以下のコードは、Psr\Http\Message\ServerRequestInterface
最初の引数として型のオブジェクトが渡さPsr\Http\Message\ResponseInterface
れ、2 番目の引数として型のオブジェクトが渡される関数内にあります。ローカル ファイル システムが正常に動作していることを考えると、問題はそこにはないと考えて間違いないと思います。
これはコードです:
$stream
変数と変数をダンプすると$filesize
、結果は期待どおりになります。リモート ファイルの内容が正常に印刷されます。ただし、ファイルのダウンロードは常に破損しており、ファイル サイズは常に 0 バイトです。
私は、Flysystem が舞台裏ですべてを処理し、クライアントに提供する前に、最初に一時フォルダーにファイルを手動でダウンロードする必要がないことを前提としています。
何が問題なのか手がかりはありますか?
更新 1
また、次のコードを試してみましたが、運がありませんでした。ただし、ローカルでは引き続き動作します。
と