-2

http://www.php.net/manual/en/sqlite3.open.phpは、これを行う必要があることを意味します。

class DB extends SQLite3{
    function __construct(){
        $this->open('database.db');
    }
}

$db = new DB();
$db->query("CREATE TABLE derp(asdf, asdf)");

これについて:

$db = SQLite3::open('database.db');
SQLite3::query("CREATE TABLE derp(asdf, asdf)");

なぜ PHP.net の人々は、SQLite3 を拡張するクラスの例を持っているのでしょうか?

4

2 に答える 2

2

簡単に言えば、静的メソッドでも静的メソッドでもないように見えるSQLite3::openためSQLite3::query、静的な方法でそれらにアクセスすることは正しくありません。代わりに、それらはインスタンス メンバーであり、それらにアクセスするにはインスタンスが必要です。上記の参照された例は、どのデータベース ファイルを開くかを常に指定する必要がないように、再利用可能なデータベース ドライバ (たとえばDB、 を拡張するオブジェクト) を作成する方法を示すためにも書かれていると思います。SQLite3

ただし、クラスを拡張したくない場合はSQLite3、次のものが有効であると思われ、2 番目の例が探していることを意味するものと同様の構文が得られます ( http://www.php.netを参照)。 /manual/ja/sqlite3.construct.php ):

$db = new SQLite3('database.db');
$db->exec("CREATE TABLE derp(asdf STRING)");
$db->query("SELECT asdf FROM derp");
于 2013-11-10T21:39:46.607 に答える
0

簡単な答えは、彼らは「これではなく、これをしろ」とは言わないということです。

例を示します (コードの最初のブロック)。ページのどこにもコードの 2 番目のブロックへの参照が表示されないため、例として提供されていないことを意味しますが、使用しないように提案されたわけではありません。

于 2013-11-10T21:30:39.167 に答える