0

重複の可能性:
PHPクラスにコードを含めることはできますか?
配列にファイルをインクルードする

私はこのphpコードを持っています

   <?php
   class Config {

   public static $__routes = array(

   "Home"                    => "index.php",
   "Support"                 => "support.php",
   "Ads"                     => "ads.php",

   );

   }

   ?>

そして私はこのようなex.phpファイルを持っています

"Upgrade"                 => "upgrade.php",
"Faq"                     => "faq.php",
"Tos"                     => "tos.php",

「クラス」にある「publicstatic$__routesarray」にex.phpファイルを含めたい

のようなもの

   <?php
   class Config {

   public static $__routes = array(

   "Home"                    => "index.php",
   "Support"                 => "support.php",
   "Ads"                     => "ads.php",

   include 'ex.php';

   );

   }

   ?>

どうすればいいですか?

4

2 に答える 2

1

あなたはできません、そして私はあなたの最後の質問でその理由をすでに説明しました:

インクルードは実行時(つまり、この正確なコード行に到達したとき)にのみ発生し、解析時(つまり、ファイルがロードされたとき)には発生しないため、各ファイルはそれ自体が有効なPHPコードである必要があります。

A + Bここでの違いは、リテラル(スカラー値とスカラー値の配列)のみを使用してクラスプロパティを式(つまり)で初期化できないため、代替ソリューションが機能しないことです。

プロパティは静的であるため、コンストラクターを使用することもできません。クラスの外部で割り当てる必要があります。

class Config {

   public static $__routes = array(

       "Home"                    => "index.php",
       "Support"                 => "support.php",
       "Ads"                     => "ads.php",

   );

   // ...
}

Config::__routes += (include 'example.php');
于 2013-01-24T00:51:46.897 に答える
0

それはうまくいきません。クラスプロパティを宣言するときは、いかなる種類の評価も実行できません。アイテムに参加してみませんか?

別のファイルでルートを構成する必要がある場合は、このプロパティを保護またはプライベートにし、呼び出し元が静的メソッドを使用してこの情報を取得するようにすることをお勧めします。この静的メソッドでは、静的プロパティ配列で定義されたルートを、インクルードファイルの配列(表示されている配列セグメントだけでなく)で定義されたルートと結合して、このマージされた配列を返すことができます。

于 2013-01-24T00:41:58.523 に答える