Вопрос к любителям yii
Вопрос к любителям yii
C yii я начал знакомство недавно, до этого был ci или вообще чистый пхп. Вот хотел бы спросить 'бывалых иишников' - в чем вообще прикол таких фреймвороков?! Yii конечно многофункционален и может его стоит использовать на каких то реально хайлоудах НО в наше время требуется писать на yii даже какие-нибудь простенькие инэт-магазы с товаром в лучшем случае на пару тыщ позиций. Я смотрю на yii сейчас именно с позиции использования его в таких простых проектах. Теперь просто пару имхо:
1.Блин форму сверстать- нужно вызывать какие то методы, массивы параметров и т.п. На том же бутстрапе все можно сделать гораздо быстрее и проще и не менее функционально(с проверкой вводимых данных на стороне клиента и т.п. за счет новых тегов html 5, или на крайняк написать простенький запрос к бд).
2. Запросы к бд - есть старый хороший PDO или Mysqli которые могут делать ВСЁ! В AR-составление связей и танцы с бубнами, потом инициализация критериев и т.п.-в итоге запрос который на sql был бы в одну строчку, превращается в 3.
3.Про семантику этого фреймворка я вообще молчу......
Вообщем перечислять можно долго, но суть в том что блин нахрена столько различных классов оберток, когда есть хорошие родные функции php..... Не претендую на истину, просто высказал мнение новичка, так сказать.
1.Блин форму сверстать- нужно вызывать какие то методы, массивы параметров и т.п. На том же бутстрапе все можно сделать гораздо быстрее и проще и не менее функционально(с проверкой вводимых данных на стороне клиента и т.п. за счет новых тегов html 5, или на крайняк написать простенький запрос к бд).
2. Запросы к бд - есть старый хороший PDO или Mysqli которые могут делать ВСЁ! В AR-составление связей и танцы с бубнами, потом инициализация критериев и т.п.-в итоге запрос который на sql был бы в одну строчку, превращается в 3.
3.Про семантику этого фреймворка я вообще молчу......
Вообщем перечислять можно долго, но суть в том что блин нахрена столько различных классов оберток, когда есть хорошие родные функции php..... Не претендую на истину, просто высказал мнение новичка, так сказать.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Вопрос к любителям yii
Всегда стоит выбирать для решения задачи то, чем она решится быстрее, дешевле и лучше. С прицелом, конечно, на будущее. Yii не для всего лучшее решение.
1. Ради валидации и заполнения полей.
2. Используйте query builder.
3. Вот про это интересно конкретных примеров заполучить. Может что улучшить удастся.
Обёртки для того, чтобы:
1. Дать больше готового, чем даёт голый PHP.
2. Сгладить баги и особенности PHP.
1. Ради валидации и заполнения полей.
2. Используйте query builder.
3. Вот про это интересно конкретных примеров заполучить. Может что улучшить удастся.
Обёртки для того, чтобы:
1. Дать больше готового, чем даёт голый PHP.
2. Сгладить баги и особенности PHP.
Нравится Yii? Давайте сделаем его лучше!.
Re: Вопрос к любителям yii
Можно строить дом руками, кладя кирпич на кирпич, долго и кропотливо. Но можно изготавливать бетонную панель и из нее собирать дом, но для этого нужен завод.
Каким бы простым запрос у вас не был, все равно придется писать функции, которые будут проверять и фильтровать данные. Все равно нужен роутинг. Всеравно придется разделять код на логику и представление(я уж молчу о моделях).
Каждый программист пишет функции и классы, которые помогают ему быстрее, эффективнее и проще делать работу. Даже если вы занимаетесь только сайтами-одностраничниками, где только текст с контактами, то всеравно начнете делать заготовки(какой нибудь сброс ксс например).
Так вот, зачем нужен Yii, это набор инструментов, продуманный, протестированный, созданный умными людьми. Если я скармливаю в AR данные из поста, то я уверен, что ничего лишнего не пролезет. И мне не нужно ничего изобретать, я просто делаю свою работу.
Ну и для меня это отличный способ научится новому. Многим отличным решениям, а главное аккуратности я научился у Yii.
Каким бы простым запрос у вас не был, все равно придется писать функции, которые будут проверять и фильтровать данные. Все равно нужен роутинг. Всеравно придется разделять код на логику и представление(я уж молчу о моделях).
Каждый программист пишет функции и классы, которые помогают ему быстрее, эффективнее и проще делать работу. Даже если вы занимаетесь только сайтами-одностраничниками, где только текст с контактами, то всеравно начнете делать заготовки(какой нибудь сброс ксс например).
Так вот, зачем нужен Yii, это набор инструментов, продуманный, протестированный, созданный умными людьми. Если я скармливаю в AR данные из поста, то я уверен, что ничего лишнего не пролезет. И мне не нужно ничего изобретать, я просто делаю свою работу.
Ну и для меня это отличный способ научится новому. Многим отличным решениям, а главное аккуратности я научился у Yii.
2b||!2b Just read the instructions
Re: Вопрос к любителям yii
Ну это я понимаю. Я не говорю, что фреймы не нужны. Может такое просто впечатление первое от yii, на CI конечно все проще шло, но и он сам гораздо проще. Yii конечно, я считаю, реально сложная штука и сколько с ней времени разбираться даже не представляю. Хотя если верить отзывом то те же zend или symphony еще запутаннее yii (даже не представляю что там). А если вернуться к yii теме, то сегодня у меня ушло полдня на то, чтобы с помощью виджета Cgridview сделать таблицу с сортировкой и фильтрацией+редактирование/удаление(чудом как то заработало). Если б я это делал так как обычно такие вещи делал, то потратил бы может часа пол, максимум час. И кода кстати получилось немало.Можно строить дом руками, кладя кирпич на кирпич, долго и кропотливо. Но можно изготавливать бетонную панель и из нее собирать дом, но для этого нужен завод.
Про роутинг, пагинации и пр. плюшки- я согласен. Во фрейме это проще реализуется, но использовать yii только из-за роутинга, как то хз.......я к тому. что если взялся то надо полноценно юзать(хотя конечно секаса с формированием ссылок, к примеру я вообще не понимаю).
Роутинг, кстати, я и без фрейма делал, с фабрикой и перегрузкой и было норм)
Вообщем буду пытаться дальше грызть гранит yii......
Re: Вопрос к любителям yii
1.Ну валидацию я через html делаю, хотя очень приятно удивил unique при валидации. При написании регистрации очень облегчает жизнь.1. Ради валидации и заполнения полей.
2. Используйте query builder.
3. Вот про это интересно конкретных примеров заполучить. Может что улучшить удастся.
2.Ну AR юзаю для простых запросов, билдер для составных.
3.Ну тут я имел ввиду просто первое впечатление от структуры написания yii,стиль написания скриптов. У меня опыта мало, и я как то все сравниваю с первой 'любовью -CI'
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Вопрос к любителям yii
1. html — это клиентская валидация. Данные на сервер можно послать и без браузера, то есть валидацию необходимо делать на сервере в любом случае.
2. Всё верно.
2. Всё верно.
Нравится Yii? Давайте сделаем его лучше!.
Re: Вопрос к любителям yii
Есть и микрофреймворки и "голый php". Но...
Стоит задача от клиента (для примера)
1. Создать типовой интернет-магазин за 2 дня +) решение - готовая cms.
2. Создать не типовой интернет-магазин за 1 неделю решение php framework.
Создавать свои велосипеды очень интересно и это хорошо обучения, но если вопрос касается времени и денег, то лучше использовать готовые продукты.
Стоит задача от клиента (для примера)
1. Создать типовой интернет-магазин за 2 дня +) решение - готовая cms.
2. Создать не типовой интернет-магазин за 1 неделю решение php framework.
Создавать свои велосипеды очень интересно и это хорошо обучения, но если вопрос касается времени и денег, то лучше использовать готовые продукты.
Re: Вопрос к любителям yii
Еще раз сделаете, почитаете АПИ, привыкните и будете эту работу делать за 5 минут.bart писал(а):А если вернуться к yii теме, то сегодня у меня ушло полдня на то, чтобы с помощью виджета Cgridview сделать таблицу с сортировкой и фильтрацией+редактирование/удаление(чудом как то заработало).
Великая вещь, спасает нервы и время. Настоящая история из жизни. Приходится поддерживать сайт написанный на какой-то самодельной дряни. Сеошники захотели изменить адресацию с "/page/123" на алиасы, причем вложенные. Мне пришлось потратить больше двух недель, что бы это работало корректно и заменить везде ссылки. Есть другой проект который я сделал на Yii, захотели заменить адрес личного кабинета пользователя с "/ucp" на "/profile" и все вложенные в него страницы тоже должны быть "/profile/*". И что вы думаете, я сделал это в течении 10 секунд. Конфиг был открыт, я поправил параметры роутинга и вуаля. Все потому что я использовал встроенные механизмы фреймворка для генерации ссылок. Теперь делаю только так! Представляете сколько бы мне пришлось опять потратить времени что бы заменить все ссылки во всем проекте.(хотя конечно секаса с формированием ссылок, к примеру я вообще не понимаю)
Мысленно пью за всю команду разработчиков Yii. Отдельное спасибо Александру Макарову, который поддерживает русскоязычное сообщество. Спасибо вам!
2b||!2b Just read the instructions
Re: Вопрос к любителям yii
У yii всё же есть небольшие недочёты:
Расширенный json.
Вызван необходимостью создавать клиентский код на сервере, что обуславливает ряд проблем с кодом при работе только с клиентом, например, некоторые расширения без вмешательства в серверный код сложно реализовать.
В качестве примера можно привести валидаторы форм. Представим, что на клиенте у нас вместо jQuery используется какой-нибудь angular. В этом случае переписать клиент недостаточно.
Вместо готового jQuery кода для валидации лучше отдавать только данные с последующей обработкой на клиенте.
renderAjax
Сомнительный метод. Уже писал, что из-за встраивания в DOM тегов <script> происходит синхронная блокирующая загрузка.
Её не происходит, если скрипты уже были загружены (кэш браузера). Т.о. один из методов борьбы с этим явлением - это просто заранее подключить все необходимые файлы, но вопрос только в том, зачем тогда нужен renderAjax?
Есть и второй способ. Это парсить ответ сервера и вставлять скрипты в DOM вручную.
Проблема лишь в том, что нужно парсить. В противном случае нужно снова вмешиваться в серверный код.
P.S. Как дела с этим у других php фреймворков я даже не знаю.
Расширенный json.
Вызван необходимостью создавать клиентский код на сервере, что обуславливает ряд проблем с кодом при работе только с клиентом, например, некоторые расширения без вмешательства в серверный код сложно реализовать.
В качестве примера можно привести валидаторы форм. Представим, что на клиенте у нас вместо jQuery используется какой-нибудь angular. В этом случае переписать клиент недостаточно.
Вместо готового jQuery кода для валидации лучше отдавать только данные с последующей обработкой на клиенте.
renderAjax
Сомнительный метод. Уже писал, что из-за встраивания в DOM тегов <script> происходит синхронная блокирующая загрузка.
Её не происходит, если скрипты уже были загружены (кэш браузера). Т.о. один из методов борьбы с этим явлением - это просто заранее подключить все необходимые файлы, но вопрос только в том, зачем тогда нужен renderAjax?
Есть и второй способ. Это парсить ответ сервера и вставлять скрипты в DOM вручную.
Код: Выделить всё
var scripts = [/** Ссылки на нужные скрипты */];
for (var i = 0; i < scripts.length; i++) {
var script = document.createElement('script');
script.src = scripts[i];
document.body.appendChild(script);
}
P.S. Как дела с этим у других php фреймворков я даже не знаю.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Вопрос к любителям yii
Никак. Другие фреймворки даже не пытаются.
Нравится Yii? Давайте сделаем его лучше!.
Re: Вопрос к любителям yii
И они, возможно, правы. Фреймворк всё же серверный.Sam Dark писал(а):Никак. Другие фреймворки даже не пытаются.
В случае с валидаторами можно добавить пару тегов data-* и пожелать успеха с валидацией на клиенте.
А вот с динамической загрузкой этими 5ю строчками выше на клиенте явно не обойтись. И дело даже не в парсинге ответа, совсем забыл, что нужно сохранить порядок, а с этим будет сложнее (script.async = false - не каждый браузер ещё понимает). Хочешь асинхронную загрузку? Так и возьми какой-нибудь requirejs.