0

PHPでスーパーグローバル配列を定義するにはどうすればよいですか?

これを行う方法がないことはわかっています。しかし、回避策を知っている「頭脳」がいくつかあるのではないかと思いました。具体的には、同じデータを持つすべての .php ファイルに配列が必要です。また、次のようにアクセスしたいと思います。

echo $_HANS["foo"];

また

if( isset($_HANS["foo"]) && !empty( $_HANS["foo"] ) ) // DO

私にとって重要なのは、次のようにメンバーにアクセスする必要がある静的クラスを持ちたくないということです。

myClass::myVariable;

今ではこのようなものがありますが、実際には効率的ではないと思います:

define( 'HANS', serialize( array( 'FooKey' => 'FooData' ) ));

アクセスするには、シリアル化を解除する必要があります。データを変数に格納すると、インデックス演算子を使用できます。

$_HANS = array();
foreach(unserialize(HANS) as $Key => $Data)
{
    $_HANS[$Key] = $Data;
}
echo $_HANS["FooKey"];

すべての単一ファイルでこの foreach-stuff 全体をスキップする方法が必要です。

編集 =======================================

さて、今ではこの小さな回避策があります。これは、まったく新しいファイルを含めるよりも少し効率的です。しかし、私はまだより良い解決策を聞いています:)

上記のコードをグローバル関数に入れるだけです。

function getData()
{
    $_DATA = array();
    foreach( unserialize(HANS) as $Key => $Data )
    {
        $_DATA[$Key] = $Data;
    }
    return $_DATA;
}

私がしなければならないことは、次のコード行をすべての .php ファイルに入れることです。

$_HANS = getData();

php.ini に関する問題は、「Web ホスティング」を提供している企業との互換性です。多くの場合、事前定義された Apache、PHP、MySQL、および Perl (多くの場合: LAMP ) がインストールされ、php.ini ファイルを編集することはできません。

4

2 に答える 2

0

auto_prepend_filephp.ini でand構成ディレクティブを使用してauto_append_file、グローバル変数のマーシャリングとアンマーシャリングを定義できます。シリアライゼーションのトリックを行う必要がありますが、ハンドラーを含めることを忘れずに 1 か所で行うことができます。

于 2013-08-01T20:46:16.363 に答える