// в отдельном файле
class DB
{
public function query($sql, $params = [])
{
var_dump($sql); // имитация работы запроса
}
public function lastInsertId()
{
return 1222; // имитация работы запроса
}
}
// в отдельном файле
class UserProvider
{
private $db;
public function __construct(DB $db)
{
$this->db = $db;
}
public function saveUser(User $user): int
{
$this->db->query(sprintf('INSERT INTO users (user_id, date) VALUES (%s, %s)', $user->name, $user->date->format('Y-m-d')));
return $this->db->lastInsertId();
}
}
// в отдельном файле
class User
{
public $name;
public $date;
}
//////////////////////////////////
$userProvider = new UserProvider(new DB()); // с классом DB работайте в любом файле :) не забудьте require/include или автолоад через композер
// Создадим объект пользователя (публичные поля для примера и краткости, юзайте конструктор!)
$user = new User();
$user->name = 'Maks';
$user->date = new \DateTime();
// Сохраняем
$lastId = $userProvider->saveUser($user);
var_dump($lastId);
Зачем нам нужна таблица users в версии v2?
а что если проект кардинально изменит ряд своих модулей.