【问题标题】:Can I use constants within functions in PHP?我可以在 PHP 的函数中使用常量吗?
【发布时间】:2011-05-07 01:42:08
【问题描述】:

是否可以在 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;
}

【问题讨论】:

  • 提高措辞技巧和沮丧是完全不同的。不要成为巨魔
  • 同意@HerrK,反对票非常令人沮丧并且有时是不必要的。再说了,YourCommonSense,你在为别人的措辞技巧投反对票,我们应该如何为你在“但他需要改进”的措辞技巧投反对票?

标签: php constants


【解决方案1】:

你不需要在函数中在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:

像超全局变量一样,常量的作用域是全局的。您可以在脚本中的任何位置访问常量,而无需考虑范围。有关范围的更多信息,请阅读variable scope 上的手册部分。

【讨论】:

  • 刚刚对您的答案表示赞同,但想指出 php 将它们识别为超全局变量。 应该是 php 将它们识别为全局变量。
【解决方案2】:

您至少尝试过吗? :)

来自manual

与超全局变量一样,a 的范围 常量是全局的。您可以访问 脚本中任何地方的常量 不考虑范围。

【讨论】:

    【解决方案3】:

    是的,但您不需要称它们为“全局”。常量是全局的。如果您将unexpected T_STRING, expecting T_VARIABLE 视为错误,那是因为它不希望在“全局”语句之后看到常量引用。

    【讨论】:

      【解决方案4】:

      define() 产生全局常量。

      There are much better ways to store config items.

      【讨论】:

      • 似乎没有任何明确的结论表明这些要好得多。
      猜你喜欢
      • 1970-01-01
      • 2012-07-27
      • 2011-03-24
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多