Вопрос про CHtml

Не относящиеся к фреймворку и программированию вопросы

Можно ли считать CHtml анти-паттерном "God object"?

Да
7
27%
Нет
14
54%
Да, но в данном случае можно
3
12%
Другой ответ, описанный в комментариях
2
8%
 
Всего голосов: 26

Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Вопрос про CHtml

Сообщение slavcodev »

Привет All.
Хотелось бы выслушать ваше мнение по данному вопросу.

Можно ли считать класс CHtml - божественным.
На него возложено так много, что мне иногда его жаль и кажется что он вот вот лопнет :mrgreen:

1) Генерация тегов (методы tag и производные)
2) Работа с атрибутами и свойствами (renderAttributes, clientChange)
3) Генерация целых кусков html (errorSummary)
4) Работа с моделями (методы active..., value, )
5) Работа с js и css (ajax-методы, clientChange, assets и тд)
6) изменение и форматирование данных (encode, decode)
7) Генерация массивов данных (listData)

Где же тут "The Single Responsibility Principle"?
Жду Yii 3!
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Вопрос про CHtml

Сообщение lancecoder »

тут наверное и объектом его сложно назвать больше коллекция статических методов)
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Вопрос про CHtml

Сообщение slavcodev »

Зачем нам тогда классы, давайте вернемся к функциональному программированию.
Жду Yii 3!
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Вопрос про CHtml

Сообщение anton44eg »

Функциональное программирование на PHP? :)
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Вопрос про CHtml

Сообщение slavcodev »

anton44eg писал(а):Функциональное программирование на PHP? :)
Чему удивляемся? Разве php4 не подразумевал ФП?
Жду Yii 3!
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Вопрос про CHtml

Сообщение anton44eg »

Это называется процедурное программирование. Не сталкивались с lisr, haskell? Если нет, то почитайте что такое функциональное программирование, хотя бы http://ru.wikipedia.org/wiki/%D0%A4%D1% ... 0%B8%D0%B5 или http://habrahabr.ru/post/142351/
Аватара пользователя
web-leaf
Сообщения: 90
Зарегистрирован: 2011.02.05, 12:41

Re: Вопрос про CHtml

Сообщение web-leaf »

CHtml - это статический класс. Используется вполне по назначению. И представляет собой пространство имен. Такое ощущение что тема является просто поводом что-нибудь обсудить. В чем конфликт непонятно.
Красиво - это когда нет ничего лишнего.
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Вопрос про CHtml

Сообщение anton44eg »

web-leaf писал(а):Такое ощущение что у вас PHP плотно ассоциируется c ООП. И что ООП - это круто, а ФП стоит уровнем ниже и PHP до такого уровня опускать нельзя.
Так вот это большое заблуждение.
Опять же, не путайте функциональное и процедурное программирование.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Вопрос про CHtml

Сообщение slavcodev »

anton44eg писал(а):Это называется процедурное программирование. Не сталкивались с lisr, haskell? Если нет, то почитайте что такое функциональное программирование, хотя бы http://ru.wikipedia.org/wiki/%D0%A4%D1% ... 0%B8%D0%B5 или http://habrahabr.ru/post/142351/
Да точно, это я перепутал термины. Каюсь.
Жду Yii 3!
Аватара пользователя
web-leaf
Сообщения: 90
Зарегистрирован: 2011.02.05, 12:41

Re: Вопрос про CHtml

Сообщение web-leaf »

anton44eg писал(а):Опять же, не путайте функциональное и процедурное программирование.
Тоже говорил функциональное, подразумевал процедурное. Поэтому взял свои слова обратно.
Красиво - это когда нет ничего лишнего.
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Вопрос про CHtml

Сообщение anton44eg »

А по теме - чем плох класс со статическими методами? Типичный helper
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Вопрос про CHtml

Сообщение slavcodev »

web-leaf, не PHP у меня ассоциируется с ООП, а программирование в целом ) но при этом я не считаю что ПП это низко. Оно имеет право на жизнь, но меня не устраивает.
А так как Yii претендует на MVC фреймворк, то и ООП нужно придерживаться или нет?
Жду Yii 3!
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Вопрос про CHtml

Сообщение slavcodev »

anton44eg писал(а):А по теме - чем плох класс со статическими методами? Типичный helper
А кто говорит что он плох статическими методами? Вопрос почему куча ответственности замешано в одном.
Жду Yii 3!
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Вопрос про CHtml

Сообщение Stamm »

Путь до файла как бэ намекает, что он хелпер: "web/helpers/CHtml.php".
mc-bear, а ты думаешь его разделить на несколько статических классов, разделив функциональность: html, js, error, etc. Или применить ООП с паттернами?
Вообще я не против ООП =), но в этом случае нужно очень сильно подумать, как это решить. Будет ли достигнуть нужный эффект? Не усложнит ли это логику и не прибавит избыточную гибкость, а вследствии запутанность?
Много вопросов. Отвечаю на твой вопрос: для меня пока это не ясно.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Вопрос про CHtml

Сообщение slavcodev »

Stamm писал(а):Путь до файла как бэ намекает, что он хелпер
А что такое helper, чем он отличается от обычных объектов в ООП?
Жду Yii 3!
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Вопрос про CHtml

Сообщение lancecoder »

попробую еще раз высказаться - класс и объект это какбэ разные вещи на сколько я это представляю, в статич классе нельзя создать экземпляр. хелперы в основном группируют наборы методов схожих по цели назначения, я так понимаю что при создании объекта это уже называется api для работы с классом - имхо
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Вопрос про CHtml

Сообщение slavcodev »

эффтоп, но я считаю (возможно плохо выражусь) что, объект это конкретный экземпляр класса который имеет конкретное состояние и конкретное свойства. CHtml в данном случае можно считать объектом, даже с его только статическими параметрами и методами, потому что он имеет эти самые разные состояния, базируясь на своих параметрах (requiredCss и тд)
Жду Yii 3!
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Вопрос про CHtml

Сообщение lancecoder »

попробуйте создать клон или другой экземпляр объекта с другим состоянием, свойствами..
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Вопрос про CHtml

Сообщение slavcodev »

Stamm писал(а):нужно очень сильно подумать, как это решить. Будет ли достигнуть нужный эффект? Не усложнит ли это логику и не прибавит избыточную гибкость, а вследствии запутанность
Так мы еще не перешли к решению проблемы, мы как бы еще не определи наличие ее (проблемы).
Вот моя проблема в том, что столкнувшись с тем что нужно поменять работу ajax,
я не могу просто изменить метод CHTml::ajax тогда нужно думать как этот класс подключить чтоб не полетела та часть кода где юзается CHTml просто для тегов, все виджеты и прочее. Мне нужно все делать заново, что совсем нарушает ООП.
Жду Yii 3!
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Вопрос про CHtml

Сообщение slavcodev »

lancecoder писал(а):попробуйте создать клон или другой экземпляр объекта с другим состоянием, свойствами..
так мне это не надо, и это плохо, потому что придет кто-то после тебя, добавит расширение изменив эти свойства и весь твой код ляжет.
Жду Yii 3!
Ответить