0

次のPHPクラスがあります。

class connect {

public function __construct() {

$sql = new mysqli(...);

return $sql;

}

(もちろん、これはコード全体ではなく、アイデアを提供するためのものです。

私はそれから持っています:

class two {

public function validateInput($input) {

$dbconn = new connect();

return $dbconn->real_escape_string($input);

}

ただし、これによりエラーが発生します。クラス接続から $sql 変数で real_escape_string メソッドを呼び出すにはどうすればよいですか?

乾杯!

PS: 更新、エラーは Fatal error: Call to undefined method connect::real_escape_string() です

4

3 に答える 3

3

コンストラクターは値を返すことができません。戻り値が暗示されます (新しいオブジェクト インスタンス)。

あなたの例で$dbconnは、クラスのオブジェクトですconnect。class のオブジェクトでmysqliはないため、メソッドはありませんreal_escape_string。意味がないため、このreturn $sqlステートメントは効果がありません。

拡張するつもりだったかもしれませんmysqli(コンストラクターの引数をすべて転送する必要があるため、これは面倒です)、またはmysqli代わりにメンバーを公開するつもりだったのかもしれません。

于 2013-03-02T21:32:19.630 に答える
2

クラスconnectは、mysqliではなくconnectのインスタンスを返します。多分試してみてください:

class connect extends mysqli {
  function __construct() {
    parent::__construct(..);
  }
}
于 2013-03-02T21:33:18.450 に答える
0

あなたはもっと次のようなものを探しているかもしれません:

class connect {
    public function __construct() {
        $this->sql = new mysqli(...);
    }

    public function real_escape_string($string) {
        // Process $string using $this->sql;
        return $string
    }
}

class two {
    public function validateInput($input) {
        $dbconn = new connect();

        return $dbconn->real_escape_string($input);
    }
}
于 2013-03-02T21:36:30.970 に答える