Создавая свои объекты из запросов к базе данных, вы определяете соответствие между вашими объектами и реляционной базой данных. Это именно то, что делает программное обеспечение ORM.
Сделав это и убедившись, что ваши объекты никогда не обращаются напрямую к базе данных, а вместо этого используют ваши функции / объекты доступа к базе данных, вы защищаете свой код от изменений двумя способами:
Изменения в вашей схеме базы данных не повлияют на ваш код. Вместо этого изменения кода будут находиться только в ваших объектах доступа к базе данных.
Вы можете переключиться на другую СУБД, внедрив новый уровень базы данных, который следует тому же интерфейсу, что и оригинал. Ваши другие объекты не потребуют изменений.
Полагаю, в этом смысле вы получаете некоторую независимость от базы данных, но вам, вероятно, будет лучше использовать библиотеку базы данных, которая обеспечивает эту независимость из коробки.
На мой взгляд, преимущество в том, что вы работаете с объектами и получаете все преимущества, которые предлагает объектно-ориентированный язык. Затем вы можете прочитать логику домена на более высоком уровне (с точки зрения объектов, которые вы определили), не просматривая запросы к базе данных. Написание ORM самостоятельно может быть трудным, но есть инструменты, которые помогут с этим.
Я обычно выбираю этот путь, но я не занимаюсь разработкой PHP, поэтому не могу сказать, насколько хорошо он применим к этому языку.