В настоящее время я пытаюсь создать пару классов-оболочек для базы данных MySQL. По сути, моя цель состоит в том, чтобы избавиться от необходимости писать какой-либо SQL-код и хранить все это на PHP. Я знаю, что в масштабе это не может быть хорошим решением, но это хорошо для простых установок, таких как тот, над которым я сейчас работаю =)
Я хочу иметь возможность подключить этот код к любой таблице MySQL и автоматически генерировать функции, которые обрабатывают команды CRUD. Например, у меня есть около 20 столбцов в таблице «Пользователи», и мне нужно 4 функции для каждого столбца: «Создать», «Читать», «Обновить» и «Удалить». На самом деле они мне не понадобятся ВСЕ, но предполагается, что это просто слой, из которого я потом создаю свои настоящие PHP-приложения.
Я пытаюсь автоматизировать эти классы, которые я делаю, потому что они чрезвычайно повторяющиеся и автоматизировать генерацию должно быть очень просто.
Чтобы проиллюстрировать, где «имя» — это столбец в таблице «Пользователи»:
function createName($name) {
if($stmt = $this->db->prepare('INSERT INTO ' . $this->table .
'(name) values ("' . $name . '")')) {
$stmt -> execute();
$stmt -> fetch();
$stmt -> close();
}
else {
echo "error: " . mysqli_error($this->db);
}
}
Это может быть обобщено на:
function create{columnTitle}({$desiredValue}) {
if($stmt = $this->db->prepare('INSERT INTO ' .
$this->table . '({columnTitle}) values ("' . {$desiredValue} . '")')) {
$stmt -> execute();
$stmt -> fetch();
$stmt -> close();
}
else {
echo "error: " . mysqli_error($this->db);
}
}
Где {columnTitle} — это имя столбца, о котором идет речь, а {requiredValue} — это значение столбца для этой записи.
Таким образом, буквально каждая функция CREATE будет в точности одинаковой, за исключением того, что имя функции и имя параметра будут равны имени рассматриваемого столбца таблицы. Мне кажется, что я должен иметь возможность получить все столбцы в базе данных и автоматически изменять имена переменных и функций вместо создания 80 стандартных функций (по 4 для каждого столбца), а затем выполнять поиск / замену миллион раз.
Есть идеи?
Я бы хотел, чтобы это работало с любыми таблицами базы данных, чтобы я мог поместить его на github, чтобы каждый мог его использовать. Так что в основном поток будет идти:
Задача ещё не решена.
Других решений пока нет …