簡體   English   中英

獲取作為參數PHP傳遞的類的靜態成員

[英]Get static member of class passed as parameter 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 '::'

如何在tableHandler訪問$database $this->table$this->table tableHandler

$ table是$ tables類的實例,因此無法從該對象訪問static參數

您必須改用tables::database因為數據庫屬於類而不是對象。

您不能直接做到這一點。 您可以使用反射或評估,我認為評估是這里簡單得多的解決方案-因為get_class 幾乎可以滿足您的需求。

例:

function __construct($table1)
{
    $this->table=$table1;
    $evalstr = '$esDataBase = ' . get_class($table1) . '::$database;';
    eval ($evalstr);
    echo $esDataBase;
}

您可能想要設置一個字段,而不是像esDataBase這樣的隨機變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM