0

PHPでは、次の状況で正しい方法は何ですか。

MySQLのホスト名、ユーザー、パス、コードがテスト環境で実行されているかどうかを示す$ Test変数、サイト全体で使用するその他の変数など、いくつかのパラメーターを含む「中央」vars.phpがあります。

次に、サイト全体で使用できるすべての関数を含むfunctions.phpがあります。

これらの関数のいくつかでは、vars.phpファイルからいくつかの変数が必要になる場合があります。

vars.phpをPHPの「どこでも」利用できるようにする正しい方法は何ですか?今私はこのようにそれをやっています:

vars.php:
   <?php
   if(strstr($_SERVER['HTTP_HOST'],"localhost"))
   {
       $Test = true;
   }
   ?>

functions.php:
   <?php
   function DoSomething()
   {
      include "vars.php";
      if($Test)
      {
         $String = "Test is true!";
      }
         else
         {
            $String = "Test is false!";
         }
      return $String;
   }
   ?>

index.php:
   <?php
   include "vars.php";
   include "functions.php;
   $DoSomething = DoSomething();
   echo $DoSomething;
   ?>

これは機能しますが、定義する各関数にvars.phpを含める必要がありますが、これは私にとって「良い」解決策のようには思えません。vars.phpの変数をグローバルスコープで直接定義し、それらを含めることを心配せずに関数内で直接使用できる方法はありませんか?

ありがとう!

4

3 に答える 3

4

正しい方法は、変数の代わりに定数を使用することです。

于 2012-08-21T11:44:07.297 に答える
2

あなたはグローバル変数を探しています。ページの上部にファイルを含めてから、次のように関数内で各ファイルをグローバルとして宣言する場合:

include('vars.php');


function whatHost()
{
  global $host;
  echo $host;
}

それが動作します。ただし、これは非常に悪い習慣です。グローバルな状態は95%の確率で非常に悪いからです。PHPには、オブジェクト内の機能と状態をカプセル化できる強力なオブジェクト指向機能があります。それを読んで、アプリケーション構成を保存するためのより適切な方法について学ぶことをお勧めします。この特定の状況では、定数(:

于 2012-08-21T11:46:13.683 に答える
1

定数を使用します。すべてを一緒に定義し、常にクラス/ファイルの上に置きます。

定数は一意であり、構成情報または静的/定数データとして使用します。

uがsueDEFINEである場合は、constをvarではなく文字列として使用することを忘れないでください。例:

define( "BASE_PATH"、 "C:// base /");

$ dir=BASE_PATH。"images / dropbox.txt";

http://php.net/manual/en/language.constants.php

于 2012-08-21T11:50:05.957 に答える