私はOOPに比較的慣れていないので、ウェブサイトをgithubのSafemysql https://github.com/colshrapnel/safemysqlに適応させようとしています。
OOP に基づいてさらにコードを作成する前に、解決しなければならないなぞなぞに出くわしました。
私の Web サイトには、データベース ユーザーのさまざまなリストを照会する管理セクションがあります。User クラスに対する私の最初の試みは
class User {
function __construct($user_id) {
$this->dbs = new SafeMySQL();
$this->user = $this->dbs->getRow('SELECT * FROM users WHERE id = ?i', $user_id);
}
function get_something_else() { }
function calculate_this() { }
}
foreach (array as $user_id) {
$user = new User($user_id);
}
この最初の方法を使用すると、何百もの結果のページがある場合、同じ数の接続を作成するだけでよいことがわかります。そのため、ユーザー クラスを使用する方法をさらに 2 つ考えました。
class User {
function __construct() {
$this->dbs = new SafeMySQL();
}
function load_user($user_id) {
$this->user = $this->dbs->getRow('SELECT * FROM users WHERE id = ?i',$user_id);
$return $this->user
}
function get_something_else() { }
function calculate_this() { }
}
$data = new User();
foreach (array as $user_id) {
$user = data->load_user($user_id);
}
このクラスを使用しても問題はありませんでしたが、誤って別のユーザーに永続化される変数を定義してしまうのではないかと考え続けています。
私が考えたもう 1 つの代替案は、自分の接続を定義し、それをこのようなクラスに使用すること $user = new User($user_id, $connection)
でしたが、今では見栄えがよくありません。
現在、グローバル接続と永続接続について調べていますが、それらを推奨していない人もいます。
私のユーザークラスを書くための最良の方法は何ですか?