Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Классы, методы и параметры [2]
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
"для того чтобы полностью скрыть реализацию функции в классе" ... что ты имеешь ввиду? Если можно - пример. Я правда не понимаю, что ты имеешь ввиду и не представляю кейсов, где это можно использовать.
Когда речь идет о ООП, С++ не стоит вспоминать, лучше уж java. (Добавление)
Абстрактные классы в php тоже называются абстрактными классами, интерфейс - это другое и несет другие цели
Slavenin
Отправлено: 17 Июня, 2011 - 16:33:57
Посетитель
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
никогда нельзя точно сказать какие именно свойства объекта возьмет функция для своего использования. хотя здесь все спорно в общем мне кажется ИМХО что так удобнее, когда все содержиться в одном месте и объект знает какие свойства ему необходимы. Я согласен что возможны сложности при таком подходе, но "мы не ищем легких путей"... а относительно с++ не абстрактные функции, а просто функции, память меня все же подвела
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
"никогда нельзя точно сказать какие именно свойства объекта возьмет функция для своего использования" Вы всегда должны знать, какая функция и что требует для своей раблты, если этого нет - мне жаль программиста, который будет работать над проектом после вас.
То, что вы описываете, очень похоже на объекты данных, но реализовано на столько странно, что я сомневаюсь.
Slavenin
Отправлено: 17 Июня, 2011 - 17:07:24
Посетитель
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
Stierus пишет:
"никогда нельзя точно сказать какие именно свойства объекта возьмет функция для своего использования"
я точно знаю какая функция что возьмет и какие свойства удалит после использования.
Stierus пишет:
То, что вы описываете, очень похоже на объекты данных,
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
у функции может быть множество аргументов ... 5, 10, 20 - много ... это не удобно, ибо путаемс + порядок надо помнить
функция может получать массивы, это уже лучше, но не идеал. Программист не знает структуру принимаемого массива, какие там ключи и тд
Поэтому используют data transfer object - это объект, единственной задачей которого является получать, хранить и отдавать информацию. это то же самое, что массив, только с заранее всем известным списком элементов, описанным интерфейсом.
Так же их используют для группировки разных данных при пересылках между сервисами в СОА что бы сократить количество межсервисных запросов.
DeepVarvar
Отправлено: 17 Июня, 2011 - 17:51:04
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Slavenin нам по наследству досталась старенькая админка.
Так вот в ней какраз такой принцип передачи параметров...
Я постоянно путаюсь - какие там параметры какой объект (или ф-ция) получил(а), а какой объект (или ф-ция) какие отдал(а)..
Куча рекурсивных вызовов.
Пока всю цепочку передачи проследишь - свихнешься.
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
Stierus, именно так я вначале и сделал, для унификации обмена данных между классами, но потом путем логических измышлений пришел к выводу что проще все хранить в исходном объекте.
DeepVarvar, именно для этого я сделал стек вызовов, где четко отслеживается из какого файла, какая функция какую вызвала и с какими параметрами
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Slavenin пишет:
четко отслеживается из какого файла, какая функция какую вызвала и с какими параметрами
И зачем тогда лишняя "слежка"?
Единственное применение этой штуке я вижу для простенького шаблонизатора:
Дали параметр? - перепиши,
не дали? - ну и хрен с ним,
нечем было переписывать? - сотри совсем.
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Мы явно друг друга не поняли Ладно, закроем эту тему. если нравится и все круто - используйте, что тут еще скажешь
Slavenin
Отправлено: 17 Июня, 2011 - 19:12:39
Посетитель
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
хорошо, можно и закрыть
только сейчас столкнулся с тем, что все-таки не ошибся переписав пяток классов под такую реализацию. в одном из них есть функция формирующая запрос, у нее есть несколько обслуживающих функций, как оказалось очень удобно внутри любой обслуживающей функции знать какие именно параметры запроса определены, это к вопросу "зачем?"
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Slavenin, любопытсва ради, скинь архив с этими классами, посмотрю, что ты имеешь ввиду. ровно столько что бы было понятно, что происходит в системе и зачем оно нужно. В личке почта, куда скинуть (если захочешь)
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.