2016-09-04 13 views
1
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); 

パラメータとして渡されたPHPのですか?クラスの静的メンバは、これは以下を生成し

+0

PHPのバージョンは? <7.0の場合は、まずアップグレードします。 – bwoebi

+0

...コード内でグローバル状態の使用を中止することができます –

+0

'getDatabase'というテーブルクラスのメソッドがあります。これは静的変数を返します。すなわち 'return self :: $ database;'他の選択肢は、反射を使用することですが、それはあなたがやろうとしていることに対してかなり複雑です。 –

答えて

0

$表には、データベースオブジェクトにクラスに属していないので、代わりにtables::databaseを使用する必要がありますので、静的な引数がこのオブジェクト

からアクセスすることはできませんクラス$表のインスタンスです。

-1

これを簡単に行うことはできません。あなたは反射または評価を使用することができます。私の意見では、evalはもっと簡単な解決策です。get_class がほぼになります。

例:

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

おそらくフィールドではなく、esDataBaseのようないくつかのランダムな変数を設定したいと思います。

関連する問題