Могу ли я использовать константы внутри функций в PHP? - PullRequest
20 голосов
/ 09 ноября 2010

Можно ли использовать константу 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;
}

Ответы [ 4 ]

21 голосов
/ 09 ноября 2010

Вам не нужно объявлять их в 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:

Как суперглобальныеобласть действия константы является глобальной.Вы можете получить доступ к константам в любом месте вашего скрипта независимо от области видимости.Для получения дополнительной информации о области действия прочитайте раздел руководства по переменная область действия .

3 голосов
/ 09 ноября 2010

Вы хотя бы пробовали это? :)

Из руководства :

Как и суперглобальные константа является глобальной. Вы можете получить доступ константы в любом месте вашего скрипта без учета объема.

2 голосов
/ 09 ноября 2010
1 голос
/ 09 ноября 2010

Да, но вам не нужно называть их "глобальными".Константы глобальные.Если вы получаете unexpected T_STRING, expecting T_VARIABLE как ошибку, то это потому, что он не ожидает увидеть ссылки на константы после «глобального» оператора.

...