[英]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.