class tables
{
public static $database="testDB";
}
class tableHandler
{
var $table;
function __construct($table1)
{
$this->table=$table1;
var_dump($table1::$database,$this->table::$database);
}
}
$table=new tables();
$handler=new tableHandler($table);
这会产生以下结果:
string(7) "testDB"
Parse error: syntax error, unexpected '::'
如何在$database
中访问$this->table
的{{1}}?
答案 0 :(得分:0)
$ table是类$ tables的一个实例,因此静态参数无法从该对象访问
您必须使用tables::database
,因为数据库属于该类而不属于该对象。
答案 1 :(得分:-1)
您无法以直截了当的方式执行此操作。您可以使用反射或评估,在我看来,eval是一个更简单的解决方案 - 因为get_class 几乎可以满足您的需求。
示例:
function __construct($table1)
{
$this->table=$table1;
$evalstr = '$esDataBase = ' . get_class($table1) . '::$database;';
eval ($evalstr);
echo $esDataBase;
}
您可能想要设置一个字段,而不是像esDataBase这样的随机变量。