私は何年も 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 を作成することもできますが、データベースに繰り返し接続する必要もないようです。