获取作为参数PHP传递的类的静态成员

时间:2016-09-04 03:16:47

标签: php

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}}?

2 个答案:

答案 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这样的随机变量。