DAL генератор для php - PullRequest
       6

DAL генератор для php

1 голос
/ 22 ноября 2010

Переходя от .Net к PHP, потому что я хочу исследовать возможности языка, с которым я борюсь, чтобы найти какой-нибудь способ автоматически сгенерировать DAL. В .Net я бы просто использовал Visual Studio для генерации модели данных, но как я могу это сделать с помощью PHP и MySQL, чтобы мне не пришлось вводить вручную все классы? Моя текущая PHP IDE - Aptana.

Ответы [ 3 ]

3 голосов
/ 22 ноября 2010

Вы можете использовать ORM, например Doctrine или Propel .

Это функция автоматического генерирования классов из схемы и наоборот.

Если вам нужно написать собственный слой доступа, я бы рекомендовал использовать PHP Data Objects (PDO) , поскольку он обеспечивает хороший интерфейс OO и абстракцию ядра БД.

2 голосов
/ 23 ноября 2010

Обычно я бы не писал ответ, так как у вас уже есть 2, но я хотел бы поделиться с вами своими собственными соображениями, учитывая тот факт, что я являюсь разработчиком .NET и PHP и постараюсь воспользоваться :

  • Если вы ищете мощный код для генерации кода, как Visual Studio, то не ищите больше, потому что в PHP я еще не нашел его и искал годами. Visual Studio просто " огромный "

  • Насколько я понимаю, не существует такой вещи, как стиль кода .NET. Я считаю, что большинство PHP-фреймворков / приложений приносят большие жертвы ради «простоты», и я думаю, что это просто неправильно. Код должен быть расширяемым, обслуживаемым и масштабируемым в любой среде / приложении, которое вы создали

  • Propel и Doctrine превосходно подходят для отображения данных (ORM), так же как NHibernate или Entity Framework в PHP, но помните, что вам понадобятся уровень доступа к данным и уровень доступа к бизнесу для полностью разработанного приложения, которое будет масштабируемая.

  • Имейте в виду, что PHP поддерживает ОО во многом подобно .NET, но отличается несколькими отличиями, но хорошо разработанные конструкции предназначены для ЛЮБОГО языка.

Я думаю, что мой ответ немного отошел от первоначального вопроса, но я хотел дать вам более широкий ответ, поскольку, как вы сказали, вы хотели:

... исследовать возможности язык ...

И вам нужно много мнений, чтобы сформировать свое собственное. Желаем удачи в вас и надеюсь, что мой ответ не убил вас от скуки! :)

PS: Если вам нравятся дополнительные материалы по BLL и DAL с использованием PHP, прочитайте эту статью Я написал в своем блоге.

1 голос
/ 22 ноября 2010

Если вы действительно хотите перейти к идее, лежащей в основе 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, чтобы понять его возможности. Если вы продолжите идти по этому пути - вы решите, что он слабый, неточный, неуклюжий и подвержен ошибкам; и вы упустите все величие, которое он предлагает в своей гибкости, расширяемости, хакерских способностях и духе. Я не хочу, чтобы вы упускали смысл языка.

...