web-dev-qa-db-ja.com

PHPの関数内で定数を使用できますか?

PHP関数内でPHP定数を使用することは可能ですか?

// in a different file
DEFINE ('Host', 'hostname');
DEFINE ('USER', 'username');
DEFINE ('PASSWORD', 'password');
DEFINE ('NAME', 'dbname');

// connecting to database
function database()
{
    // using 'global' to define what variables to allow
    global $connection, Host, USER, PASSWORD, NAME;
    $connection = new mysqli(Host, USER, PASSWORD, NAME)
        or die ('Sorry, Cannot Connect');
    return $connection;
}
21
Jeremy

関数のglobalでそれらを宣言する必要はありません。PHPはそれらをグローバルとして認識します。

function database()
{
  // using 'global' to define what variables to allow
  global $dbc;
  $connection = new mysqli(Host, USER, PASSWORD, NAME)
      or die ('Sorry, Cannot Connect');
  return $connection;
}

Php.netから:

スーパーグローバルと同様に、定数のスコープはグローバルです。スコープに関係なく、スクリプト内のどこからでも定数にアクセスできます。スコープの詳細については、 可変スコープ のマニュアルセクションをお読みください。

22
Haim Evgi

少なくとも試したことはありますか? :)

手動 から:

スーパーグローバルと同様に、定数のスコープはグローバルです。スコープに関係なく、スクリプト内のどこからでも定数にアクセスできます。

3
netcoder

define()はグローバル定数を生成します。

構成アイテムを保存するためのより良い方法があります。

3
alex

はい。ただし、「グローバル」と呼ぶ必要はありません。定数はグローバルです。あなたが取得する場合 unexpected T_STRING, expecting T_VARIABLEエラーとして、「グローバル」ステートメントの後に定数参照が表示されることを期待していないためです。

1
theazureshadow