![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| linuxoid |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 17.4.2005 Репутация: нет Всего: нет |
Здравствуйте, коллеги!
Я как-то писал один PHP проект на легеньком framework'e. Там я для удобства использовал один большой статический класс, к примеру Helper::cancelMembership() Этот метод было удобно вызывать, передавая лишь id юзера и группы (к примеру). Не нужно было инициализировать все соответствующие классы в контроллере, т.к. этим занимался метод Helper::cancelMembership() Т.е. метод изменял и удалял записи из разных таблиц, удалял файлы и делал еще какую-то работу, для этого сам метод использовал другие методы в этом же Helper'e. Таким образом в классе Helper я создал много методов, которые облегчили жизнь. Даже метод delete для какой-нибудь модели я делал в этом Helper'e, чтобы можно было просто вызвать к примеру Helper::deleteUser(26); Это чтобы не создавать внутри котнтроллера объект класса модели.. Возник такой вопрос: где в CakePHP можно создать что-то на подобии - такой же большой helper? Создать ли 1 helper на все случаи жизни или сделать несколько файлов в соответствии с классификацией.. В общем где это делается в каке. Благодарю. Это сообщение отредактировал(а) linuxoid - 8.8.2011, 17:19 |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
правильнее так:
User::get(26)->delete(); То, что написано выше про класс Helper - это антипаттерн(заумный гoвнокод) blob. Это сообщение отредактировал(а) Absinthe - 9.8.2011, 18:29 |
|||
|
||||
| linuxoid |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 17.4.2005 Репутация: нет Всего: нет |
Ну тут ты конечно перегнул.. все вполне разумно. По идее, если все делать "правильно", то и статический класс нужно убирать.
1) Используется статический класс User::get(26)->delete(); А в моем хелпере это было бы так:
Чем такой код лучше, чем твой (опять же, на мой взгляд)? Тем, что я в любой момент могу подставить вместо new User() к примеру new UserTest() и использовать совсем другой класс, а тебе придется свой класс Users изменять напрямую или менять все файлы, где ты его вызываешь. 2) User::get(26)->delete(); это круто и коротко, но только если ты сразу пишешь без багов и не собираешься ничего тестировать. Поэтому сначала лучше сделать get, а потом уже delete. Это чтобы удобнее и нагляднее читался код. 3) Это просто и действительно очень удобно использовать. P.S. Но я всегда готов учиться, так что если что поправляйте! P.P.S. И все-таки хотелось бы услышать что-то по теме (CakePHP). Может быть это просто component (или несколько компонент в соответствии с функционалом)? Это сообщение отредактировал(а) MoLeX - 10.8.2011, 05:26 |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
Я тебе задам три вопроса(относительно твоих пунктов), на которые ты сам ответишь:
1) Как устроен мой get? Что такое класс User? 2) Почему нет разницы? 3) Согласен. А где притензия? Напоследок:
Это сообщение отредактировал(а) MoLeX - 10.8.2011, 05:26 |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
-------------------- Amazing |
|||
|
||||
| linuxoid |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 17.4.2005 Репутация: нет Всего: нет |
Я согласен в том, что лучше использовать разные хелперы для разных целей. К примеру User, Group, Membership и т.д. Цель - не забивать на тысячи строк 1 файл (и то - в NetBeans или любом другом IDE это не проблема). В некоторых книжках может быть это и "неправильно" (использовать хелперы таким образом). И для меня это не единственный путь, но вполне приемлемый, легко читаемый, легко расширяемый, легко обновляемый и удобный вариант + никаких проблем с объяснением другим, что и как.
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |