从字符串内查询类?

时间:2011-04-06 04:21:16

标签: php string class

假设我有这样的课程:

class Database
{
    public static $hostname = 'localhost';
}

有没有办法做到这一点?

$createDatabaseQuery = "CREATE DATABASE IF NOT EXISTS Database::$hostname";

目前我在尝试从字符串中访问该类时遇到错误,我想避免这种情况:

$hostname = Database::$hostname;
$createDatabaseQuery = "CREATE DATABASE IF NOT EXISTS $hostname";

3 个答案:

答案 0 :(得分:1)

在双引号中,您只能使用“变量表达式”。它们必须始终以${$来解释。如果没有类限定符,则无法直接访问类变量。

唯一可行的解​​决方法是:

 $Database = "Database";   // class name
 "CREATE DATABASE IF NOT EXISTS {$Database::$hostname}";

但这只是另一种更糟糕的情况。

这将是“变量表达式”替代方案:

 $var = "mysql_real_escape_string";   // trick
 "CREATE DATABASE IF NOT EXISTS {$var(Database::$hostname)}";

答案 1 :(得分:1)

在某些情况下,使用Complex (curly) syntax会有所帮助 - 但不幸的是,不是这种情况。

引用该页面的相关部分:

  

使用单花括号({})将   无法访问返回   功能或方法的价值或   类常量或静态的值   类变量。


你必须最终使用字符串连接:

$createDatabaseQuery = "CREATE DATABASE IF NOT EXISTS " . Database::$hostname;

答案 2 :(得分:1)

$createDatabaseQuery = "CREATE DATABASE IF NOT EXISTS ".Database::$hostname;