Задать вопрос

Хочу изучать Yii, но есть вопросы…?

Я уже очень долгое время пишу на php. Сделал кучу сайтов, магазинов и т.д. Своя админка. Но в целом как это все было быдлокодерством, так и осталось. Т.е. несмотря на то, что сделал много, проф программистом себя не считаю. Всегда работал один, НЕ в компании себе подобных, поэтому учиться было не у кого. Сейчас больше не хочу делать сайты на своем собственном движке, которые дорабатывался все эти годы и который в принципе исполняет свои функции. Не хочу по той причине, что как ни крути, но он примитивен и «страшен» внутри. Хочу выйти на новый уровень, начать писать нормальный код. Ну или хотя бы пытаться.



Стоял перед выбором: переписать свой движок, взять готовую CMS и разбираться с ней, либо изучить какой-нибудь фреймворк. После долгого чтения форумов, хабра и т.д., пришел к выводу что нужно рассматривать третий вариант. Также после долгих мучительных выборов остановился на Yii.



Т.к. я никогда не работал с фреймворками, то я никак не могу в голове уложить и четко представить себе что такое «framework». Раньше я думал, что это просто набор готовых классов, который уже содержит в себе решение многих задач, которые не придется решать программисту. Затем узнал, что фрейворк – это больше чем просто набор классов. Например, тот же Yii уже после установки имеет готовую архитектуру веб-приложения, базу данных и т.д. Т.е. по сути, готовый каркас, на основе которого можно писать свое.



Вопрос 1. «Готовый каркас» — это клиентская часть сайта (front end) или каркас админки (back end)? Или же изначально каркас – это просто готовая файловая структура, классы, база данных и т.д., а клиентскую часть и админскую я должен писать сам, на основе этого каркаса? Я боюсь, что очень неясно изъясняюсь, т.к. всю эту кашу мыслей в голове пытаюсь преобразовать в четкий вопрос.

Когда я, скажем, пишу на php с нуля, я создаю клиентскую часть сайта: index.php, файлы шаблонов, классы, БД и т.д. И создаю админскую часть, у которой свой index, свои шаблоны и т.д. В Yii я тоже пишу админку с нуля (используя классы фреймворка) или же админская часть уже существует и мне ее уже нужно допиливать до своих нужд (верстать внешний вид и навешивать свои функции)?



Вопрос 2. Я приведу простой и дурацкий пример, для того, чтобы на его основе задать вопрос. Скажем, на сайте есть разделы: «новости», «статьи», «события», «вопросы/ответы» и т.д. Я это все общим словом называю «списки». Т.е. для каждого такого списка есть своя таблица в БД (например, «статьи»). В админской части сайта я создаю раздел, где пользователь может «добавлять/редактировать/удалять» элементы этого списка (статьи). Админская часть сайта предоставляет шаблон, в котором соответствующая форма, куда вводятся «название», «текст», «автор» и т.д. статьи (для каждого списка свой набор характеристик). Я правильно понимаю, что процесс создания таких «списков», т.е. добавления новых таблиц (скажем, были на сайте новости и статьи, а я еще добавляю список (таблицу) «авторы») он максимально автоматизирован? Или я это делаю, так как и сейчас, т.е. сам создаю новую таблицу в БД (таблица «авторы»), добавляю столбцы этой таблицы (имя автора, дата рождения автора и т.д.), сам создаю новый раздел в админской части, шаблоны для его редактирования, класс для работы с авторами и т.д.?



Вопрос 3. Насколько гибок фреймворк. Задам этот вопрос на основе предыдущего. Скажем, у нас есть две таблицы «статьи» и «авторы». Каждая статья связана с каким-либо автором (через ID в БД). И заказчик сайта просит чтобы в админке это выглядело, например так: Заходим в раздел «статьи» и сначала видим список авторов. Кликнули по автору, и попали на страницу со списком статей этого автора. И уже кликнув по конкретной статье, мы переходим к ее редактированию. Такая вот реализация администрирования статей. А, например, на другом сайте другой заказчик хочет, чтобы схема была такая: Зашли в админке в раздел «статьи», увидели список всех статей. Вошли в конкретную статью и на странице ее редактирования есть выпадающий список авторов (которые, естественно, берутся из таблицы «авторы») и через этот выпадающий список мы привязываем статью к конкретному автору. Т.е. я привел в пример два разных варианта реализации функционала. Делая сайт на своих кодах, я могу без проблем реализовывать любые подходы. Тут я царь и бог. А как насчет Yii, могу ли я извращаться как угодно? Ведь, допустим, работаю с какой-то известной CMS системой, такие вещи не прокатят. CMS-ки имеют строго заданный функционал. Этот функционал, конечно, бывает огромен, но все-равно загнан в какие-то строгие рамки. И если хочется что-то кардинально изменить, то нужно лезть в коды и переписывать.



Вопрос 4. Некоторые люди, обсуждая темы фреймворков, на том же хабре, например, часто говорят фразы типа: «я вот попробовал проект сделать на Yii, потом решил изучить Kohana и сделал на нем, а потом еще сделал на Zend…». Ладно, я понимаю, что есть люди, которые очень обучаемы и они могут довольно быстро переходить от одного фреймворка к изучению другого и делать на нем проект, но я не понимаю КАК это может быть рентабельно??? Ведь мало сделать сайт (клиентскую часть), сейчас же в 90% случаев к сайту нужна админка. Неужели программисты, так легко, переходят от одного фреймворка к другому, так же легко пишут для него свою админку? Или же все-таки админка уже наработана, скажем, на одном проекте (фреймворке) и просто каким-то образом программисты ее мигрируют в другие свои проекты (на других фреймворках), хотя я не понимаю как это может быть. На мой взгляд, из своих наработок можно перенести только представление (т.е. наборы шаблонов, внешний вид), но весь функционал нужно заново затачивать на основе нового фреймворка. Или я опять чего не понимаю…
  • Вопрос задан
  • 13264 просмотра
Подписаться 29 Оценить Комментировать
Ответ пользователя mihailkog К ответам на вопрос (6)
@mihailkog
Если вы новичок, то можете почитать Yii для начинающих
Ответ написан