Пишу интернет-магазин в качестве закрепления изученного материала.
В процессе написания возникает множество функций в целом похожих друг на друга, но тем не менее с различными условиями.
Так например при добавлении товара в каталог я делаю проверку введенных данных и затем в модели с помощью функции create добавляю товар если все указано верно.
После создания товара его понятное дело можно отредактировать, для сохранения изменений есть отдельная функция в модели, называется просто edit
По сути обе функции в модели товара похожи, поля форм создания и редактирования товара практически идентичны, разница лишь в insert и update.
Возможно ли объединить две функции в одну и как писать так чтобы не повторяться? Ведь помимо товаров в магазине предусмотрена возможность создания категорий, счетов на оплату, страниц и т.д.
Ваша СУБД может поддерживать конструкцию "INSERT OR UPDATE", например, она либо вставляет элемент, либо его апдейтит, если он есть, но нужно, чтобы был уже известен айдишник.
можно также конструировать строку
$str = (условие ? 'INSERT ' : 'UPDATE ') . ''
В качестве условия можно взять проверку передан ли id в функцию.