0

インスタンス化時に使用するデフォルトのデータベース接続を含む各クラスに静的メンバーを追加しようとしています。これが私がそれをやろうとしている方法です:

<?php //other classes extend Generic
class Generic {
    public static $defaultDatabase;
    public $db;

    function __construct (&$pDatabase = null){
        if ($pDatabase!==null)
            $this->db = &$pDatabase;
        else
            $this->db = &$defaultDatabase;
    }   
}
?>


<?php
include_once("/classes/class.Database.php");
$db = new Database ("localhost", "username", "password", "TestDatabase");

$classes = array("Generic", "Member");
foreach ($classes as $class){
    include_once("/classes/class.$class.php");
    $class::defaultDatabase = &$db;//throws error here, unexpected "="
}

?>

私は何を間違っていますか?これを行うためのより良い方法はありますか、または各クラスの defaultDatabase を個別に設定する必要がありますか? 私はphp 5.3を使用していますが、これはこのようなものをサポートする必要があると理解しています。

4

2 に答える 2

1

このコードでは

 $class::defaultDatabase = &$db

静的プロパティは次の方法でアクセスされるため、defaultDatabase の前に $ を追加する必要があります。

ClassName::$staticProperty

経由でアクセスされる他のものとは異なり

$class->property;

于 2013-04-21T23:24:58.780 に答える