سلام وقت بخیر
بنظرم کدی که تدریس شد باز هم قابلیت بهینه شدن داشت، کدی که تدریس شد قابلیت crud رو فقط بر اساس primarykey که توی متغیر کلاس تعریف شده به ما میداد؛ با یه کم تغییر میشه کاری کرد که عملیات دیتابیس بر اساس هر ستون دلخواه باشه
نمونه کدی که من برای BaseModel نوشتم اینه (فقط برای عملیات read تابع نوشتم بقیه شونم مشابه همین میشه):
abstract class BaseModel{
protected $db;
protected $table;
public function __construct()
{
try {
$this->db = new PDO("mysql:dbname=mydb;host=localhost" , "root" , "");
} catch (PDOException $e) {
die("conection failed: " . $e->getMessage());
}
}
public function find_item($tableKey = "id" , $keyValue) {
$sql = "SELECT * FROM {$this->table} WHERE {$tableKey} = :keyValue";
$stmt = $this->db->prepare($sql);
$stmt->execute([':keyValue' => $keyValue]);
return $stmt->fetch((pdo::FETCH_OBJ));
}
}
و کدی که برای UserModel نوشتم:
include_once('BaseModel.php');
class User extends BaseModel{
protected $table = "users";
}
و در نهایت نحوه استفاده از متد:
$User = new User();
$findUser=$User->find_item("id" , 2);
var_dump($findUser);