![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
DimaSiK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Пишу некий класс, в классе есть метод, который принимает допустим 15 параметров. Стала задача, как бы красиво оформить передачу вот этих параметров. Параметры все приходят извне. Если все параметры передавать как отдельные переменные, то вызов метода будет ужасным типа $someObj(param1, param2, param3, param4, param5, param6, param7 .... ), мне кажется это не сильно приятно. Рассматриваю другой вариант - передача параметров через массив или с использованием функций get_func_args(). Тогда возникает проблема, что тот, кто хочет передать параметры должен знать, как работает метод и что он может принимать. Это я думаю не является верным решением при разработке и использовании класса. Увы, число параметров сократить нельзя. Работы ведется с кредитными карточками, а том в запросе могут участвовать до 20 параметров. Можете что-нибудь посоветовать?
-------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
|||
|
||||
pizzz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 14.12.2008 Где: Омск Репутация: 6 Всего: 8 |
Не внимательно прочитал
![]() Это сообщение отредактировал(а) pizzz - 22.4.2009, 00:01 --------------------
Спасибо много, жмем кнопку репутация. Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады. |
|||
|
||||
DimaSiK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Если массив, то передавать в виде ключ => значение. Тогда тот, кто вызывает данный метод должен знать все ключи, которые можно передать в метод. Мне кажется это не верно, хотя могу и ошибаться. -------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
|||
|
||||
pizzz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 14.12.2008 Где: Омск Репутация: 6 Всего: 8 |
Тогда как вариант разбить метод.
--------------------
Спасибо много, жмем кнопку репутация. Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады. |
|||
|
||||
Kirsan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.11.2008 Где: г.Волжский, Волго градская обл. Репутация: 1 Всего: 1 |
Если количество параметров у метода действительно никак уже не уменьшить, то вряд ли можно что-то красивее ассоциативного массива придумать. Просто в файле класса в комментариях укажите структуру массива. Причём комментарии лучше указывать в формате PhpDocumentor'а. Тогда описание структуры массива увидят и те, кто залезет в исходники, чтобы посмотреть, какие методы предоставляет класс, и те, кто пользуется какими-либо IDE, которые парсят файлы и выделяют объектную структуру. Наиболее популярные IDE как раз понимают комментарии в формате phpDoc.
p.s. а по свойствам класса точно часть параметров не удастся раскидать и задавать их при инициализаци объекта, например? |
|||
|
||||
DimaSiK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Нет, разбить на несколько методов не получиться, так как есть метод addTrunsaction() и они принимается пачку данных, которые уходят на сервер и все тут
![]() -------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
в "более декстопных" языках в таком случае параметры группируются в объекты. вместо 15 параметров - 2-3 объекта(параметры группируются по смыслу).
в РНР же действительно удобно использовать ассоциативные массивы. И ничего в этом страшного нет.
Вызывающий функцию при любой организации работы с параметрами обязан знать, какой параметр что обозначает. |
|||
|
||||
DimaSiK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Понятно. Спасибо всем -------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Используй 2-3 параметра на метод. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |