1

私は何年も PHP をプロシージャルに使用してきましたが、時代に合わせて OOP の練習を始めることにしました。

次のようなものがあるとします。

<?php
$db = new mysqli(host, user, pass, db);

class user {
      public $username;
      public function __construct($ID) {
             $sql_query = "SELECT `username` FROM `users` WHERE `userid`='$ID'";
             // execute that query somehow, store result in $result.
             $this->username = $result;
      }
}

$some_user = new user(1);

(クエリをエスケープする必要があることなどは知っています。基本的な例を挙げようとしています)

私の主な質問は、クラス内のオブジェクトとやり取りする最良の方法は何$dbですか? 私は電話します$db->query($sql_query);$db、アクセスできません。多くのグーグルは私に確かな答えを与えていませんが、$dbオブジェクトをコンストラクターに渡すための多くの提案を見てきました:

 $some_user = new user(1, $db);

これを「データインジェクション」と理解するのは正しいですか? すべての単一のコンストラクターに明示的に含めるよりも良い方法があるに違いないようです。もちろん、各クラス内で常に$db を作成することもできますが、データベースに繰り返し接続する必要もないようです。

4

1 に答える 1