Что вы думаете о возвращении объекта select вместо результата оператора? - PullRequest
1 голос
/ 12 мая 2009

Мне бы хотелось знать, было ли хорошей идеей возвращать объект select из метода, такого как '$ selectObj = getSomethingByName ($ name)', а затем передавать его другому методу, например 'getResult ($ selectObj)', который сделает свое дело. Идея состоит в том, чтобы иметь возможность передавать объект select любой полезной функции, например, setLimit (10) или addCriteria (blabla) в зависимости от моей модели ...

Но разве это хорошая идея? это может быть «небезопасно», потому что пользователь сможет изменить объект сам, и я не должен этого хотеть ..

Раньше я делал простой метод, как описано выше, но возвращал результат в виде строки ... но иногда бывает сложно, когда у вас сложное выражение, зависящее от разных таблиц ..

1 Ответ

5 голосов
/ 12 мая 2009

Проблема, с которой вы сталкиваетесь (сложные операторы, зависящие от разных таблиц) - это старая и широко распространенная проблема с каркасами ORM в целом. SQL может многое сделать, но ORM работает не очень хорошо. Неизбежно, вы должны компенсировать различную сложность, написав много сложного кода в вашем контроллере или представлении.

Вместо этого используйте шаблон Domain Model и инкапсулируйте сложную логику базы данных из нескольких таблиц в одном месте, так что ваши контроллеры и представления не должны знать обо всех различных деталях. Они просто знают об интерфейсе вашего класса предметной модели, и этот класс несет полную ответственность за то, чтобы узнать, как получить информацию из базы данных.

Помните: таблица " HAS-A " модели (или нескольких таблиц) - вместо таблицы " IS-A " модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...