2016-10-20 8 views
0

私は、Slimを使用してAPIを実行するサーバーを持っている。PHP - SLIM API - 複数のPHPファイル間で変数を共有するが、特定のものを要求する

各APIリクエストは、異なるPHPファイルで分割されたPHPコード/ファンクションを示します。 私はPHPに重苦しいわけではありません。今は、必要に応じて各クラスで変数を渡したり設定したりしています。

異なるPHPファイル間で共有できるREQUEST SCOPE 'グローバル'変数を設定する方が良いのではないかと思いますか?しかし、すべての着信要求の間で共有されていません。

万一I:セッションと

  • 仕事ですか?
  • シングルトンと連携しますか?
  • ...

コード例がありません。 この質問は、概念的な質問にもっと合います。

REQUESTスコープを使用して、複数のPHPファイル間で変数を共有するためのアドバイスはありますか?

+0

リクエストスコープとは、同じクライアントからのリクエストの間に保存されるデータを意味しますか? – jmattheis

+0

各APIコールは要求です。 APIはさまざまなアプリケーションに対して複数の要求を処理するためです。一例として、各要求はAPIKEYを送信します。このAPIKEYは、コードに沿った複数の場所で必要な変数です。そのため、各クラスのコンストラクタ/クラス設定ツールでこの値を渡す必要なく、値にアクセスするためのより巧妙な方法を探します。 –

答えて

1

PHPアプリケーションは受信リクエストごとに開始されるため、偶発的にリクエスト間でデータを「共有」することはできません。私は今、実際にそれを行う方法について考えることはできません。

異なるファイル間の「情報共有」については、情報は実際には共有されています。ここでは例です:test.php

project/ 
    test.php 
    mew.php 

内容:mew.php

<?php 
$foo = 'bar'; 
include 'mew.php'; 

内容:GET project/test.php要求の

<?php 
echo $foo; // accessing variable that was declared in "parent" file 

が出力:

bar 

だから、実際には "共有"の問題はありません。

編集

あなたのコメントから、私はあなたがクライアント認証のいくつかの並べ替えが必要であることを理解しています。これは、IPアドレス(例えばthis middlewareなど)、高級なHTTP認証(tool for that)、JWTは良い方法です(tool)による原始的で安全でない認証から、多くの方法で行うことができます。

概念的には、すべてのクライアントの要求に何らかのトークンを付ける必要があります。リクエストを受信すると、そのトークンを取得し、それによってクライアントを特定し、適切な応答を返します。

+0

説明をありがとう! :)したがって、Singleton(例:RequestDataClass)を作成し、このSingleton内の変数を設定するのは安全な方法でしょうか?各APIリクエストは、新しいシングルトンクラスを開始し、他のリクエストシングルトンを妨害しません。 –

+0

'RequestDataClass'には何が含まれていると思いますか? –

+0

一般的なデータは、特定のAPICALLアプリケーションロジックについて共有されています。 –

関連する問題