0

いくつかのデータベース メソッドをサポートする MPTT オブジェクトに取り組んでいます。まず、MySQL と MySQLi です。今、私はそれをこのように作成しました

Mptt - 正しいサブオブジェクトをロードするメイン オブジェクト

class Mptt {
/**
 * Array of available driver types
 * @var array
 */
private $availableDrivers = array('mysqli','mysql');

/**
 * Holding an instance of the mptt object corresponding to the selected driver
 * @var object
 */
public $instance;

public function __construct($driver = 'mysqli', $autoConnect = false, $info = array())  {
    if (in_array($driver, $this->availableDrivers)) {
        switch ($driver) {
            case 'mysqli':
                $this->instance =& new Mptt_MySQLi();
                break;

            case 'mysql':
                $this->instance =& new Mptt_MySQL();
                break;
        }

        return $this->instance;
    }
}
}

今、これを機能させるのに成功した唯一の方法は、次のようなことをすることです

各ドライバーにパブリック変数を追加し、このようにします

$mptt = new Mptt('mysqli');
$mptt->mysqli->addBranch(.....);

しかし、私はそれを望んでいませんmysqli-> part..だから私は多分$this->instance参照として渡そうとしたら、代わりに$mptt参照するだろうと思いましMptt_MySQLiた..

うまくいけば、誰かがこれに対する答えを知っています..

前もって感謝します - オーレ

4

1 に答える 1

2

まず、PHP 5 オブジェクトはデフォルトで参照によって渡されるため、 &beforeは必要ありません。newあなたがしていることは正しいですが、コンストラクターでこれを行うことはできませんgetInstance()。オブジェクトを構築し、への参照を返すメソッドを定義する必要があります$this->instance

于 2011-07-10T14:57:49.903 に答える