Если вы действительно хотите перейти к идее, лежащей в основе PHP, а не просто писать код в стиле .net на PHP, вам нужно отойти от универсальных методов Objects .net.
Как вы заметили, автоматическая генерация объектов не распространена в PHP. Это означает, что решение проблемы не должно опираться на это.
Попробуйте создать более общие объекты и воспользоваться преимуществами наследования, чтобы избежать раздувания объектов. Более того, старайтесь меньше полагаться на объекты передачи данных и больше полагаться на создание законченных объектов объект-инструмент.
Вы найдете, что работать с PHP гораздо приятнее, если вы избавитесь от атрибутов .net.
Если говорить об этом в перспективе, я не думаю, что за 5 лет, что я профессионально работал в PHP, в крупных проектах, таких как Army.mil, я когда-либо чувствовал необходимость создания полноценного DAL для получить работу.
Самый большой проект, над которым я работал, просто имеет систему классов моделей, каждый из которых содержит список методов, которые опрашивают базу данных на необработанные данные, а затем передают эти данные в конечные объекты. (в данном случае статьи, которые составляют статьи на Army.mil)
Просто нет необходимости в другом слое между моделью и данными в PHP. Это почти всегда означает больше работы без выгоды.
Существуют различные причины, почему они действительно имеют смысл в .net. Не в последнюю очередь из-за того, что они могут быть сгенерированы автоматически, и поэтому почти нет затрат времени на их получение.
Тем не менее, когда он заключен в рамки, DAL снова начинает обретать смысл. Если ваш проект является базовым, я бы предложил такую структуру, как CodeIgniter. CI содержит действительно хорошую систему абстракции базы данных. Он отказывается от SQL в пользу методов, которые преобразуются в любую конкретную базу данных, определенную вами в конфигурации. Это служит той же цели, что и DAL. Вы по-прежнему создаете запрос в модели, и вам по-прежнему необходимо знать структуру вашей базы данных. Но, несмотря на то, что .net хочет, чтобы вы поверили, в любом случае это все еще вызывает беспокойство .net DAL.
Однако, чтобы действительно ПОЛУЧИТЬ, что такое PHP, вам нужно потерять атрибуты фреймворка и работать свободно. PHP - это хакерский язык. Это позволяет взломать. (как в программировании «сиденье из штанов», не взламывая, ладно, оба…) И это действительно то, что вам нужно сделать, чтобы понять, о чем идет речь.
Меч обоюдоострый? Полностью. Но быстрая и свободная игра с кодом - это то, где PHP вступает в свои права. Есть причина, по которой это язык goto для быстрого стартапа.
Извините за длинный и технически не по теме ответ. Я надеюсь, что вы можете простить меня. Вы сказали, что начали использовать PHP, чтобы понять его возможности. Если вы продолжите идти по этому пути - вы решите, что он слабый, неточный, неуклюжий и подвержен ошибкам; и вы упустите все величие, которое он предлагает в своей гибкости, расширяемости, хакерских способностях и духе. Я не хочу, чтобы вы упускали смысл языка.