【问题标题】:PHP constant in static variable静态变量中的 PHP 常量
【发布时间】:2013-06-25 10:19:13
【问题描述】:

我需要在静态变量中使用 PHP 常量,但我今天发现这是不可能的:Is a global PHP CONSTANT available inside of a Class file?

define("TABLE_PREFIX", "TEST_");

class Test {

    private static $sql_query = "select * from ".TABLE_PREFIX."USER";

    public static function show_query1() {
        echo "My first test";
        echo self::$sql_query;
    }

    public static function show_query2() {
        echo "My second test";
        echo self::$sql_query;
    }

}


Test::show_query1();
Test::show_query2();

我不想将常量作为参数传递给静态函数,也不想在每个静态函数中声明 $sql_query。

最好的方法是什么?

编辑:添加演示 = http://codepad.org/aqzj2TJh

【问题讨论】:

  • 你可以使用常量就好了。你不能做的是使用像"concatenated"."strings"这样的表达式。
  • 你已经找到了正确的答案,只是你误会了。
  • @YogeshSuthar :经典的 getter 和 setter 仅适用于对象上下文。我不想定义一个静态设置器并每次都调用它......(如果有其他解决方案)
  • @Jon :您可以很好地使用常量 => 那么为什么我会收到此错误:“解析错误:语法错误,意外 '.',期待 ',' 或 ';'在第 7 行”(参见我添加的演示链接)
  • @deceze:你能解释一下吗?

标签: php variables static constants


【解决方案1】:

你可以用其他方式做同样的事情。

define("TABLE_PREFIX", "TEST_");
define("TEST_TABLE_QUERY", "select * from ".TABLE_PREFIX."USER");
class Test {

    private static $sql_query = TEST_TABLE_QUERY;

    public static function show_query1() {
        echo "My first test";
        echo self::$sql_query;
   }

    public static function show_query2() {
        echo "My second test";
        echo self::$sql_query;
   }

}

希望对你有帮助。

【讨论】:

  • 谢谢 Amit Kumar Sharma,它可以工作,但是我的 sql 查询非常大,我在其中得到了自动换行...
  • 在这种情况下,您可以在定义中使用 %s("TEST_TABLE_QUERY", "select %s TABLE WHERE %s ");并且可以在您的班级中使用 srinf()
猜你喜欢
  • 2011-05-09
  • 2010-12-11
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
相关资源
最近更新 更多