Yii framework — первый шаг от быдлокода в php

В последние дни я не писал в этот бложек, ибо был занят изучением основ Yii. Я вообще то не программист, а так — любитель. При чем любитель писать быдлокод индийского типа — быстро, не продуманно, без комментариев, с именами переменных типа $jn1, не используя ООП. Понятно, что речь идет, если говорить аналогиями, не о постройке нового гипермаркета, а о выпиливании самодельной полочки на стену. Но для написания своего нового проекта я решил все таки превозмочь себя и использовать PHP фреймверк. До этого времени я понятия не имел, что это такое и как с этим работать.
Костыли

Как пишут в интернете, Yii — это один из самых простых php-фреймверков. Имеется сайт с документацией на русском языке, на английском уже вышли две книги. Как бы там ни было, информация есть, однако, я уже привык к более нежному отношению писателя к читателю-новичку. В мануалах по Yii очень не хватает более обширного введения для тех, кто сталкивается с фреймверками впервые: что это такое, зачем это нужно, как программирование сайта на фреймверке отличается от “обычного” кустарного программирования? Возможно, я сильно отстал от современных тендеций, и сейчас человек, который начинает изучать PHP изучает сразу же и ООП + фреймверки/шаблонизаторы, так что мои претензии беспочвенны и “обычного” php программирования сейчас не бывает. Но представим, что вдруг эти строчки читает вечно начинающий php-программист, который в курсе как работает echo, циклы, проверки, передаются параметры GET и POST из html форм… В общем уже кажется, что можно и писать, но возникают вопросы типа разделения html дизайна и php кода, эти самодельные конструкции по проверке данных из форм, работа с базой данных. И у такого программиста может получиться работающий проект — монстр, с кучей костылей и подпорок, как на картинах Дали.

Что мне дало использование Yii. Во первых — структурированность и упорядоченность кода. Помимо разделения html дизайна и php кода во фреймверке разделяются также и разные по логике части самого php кода в разные файлы. Имена файлов и папок четко связаны с http адресом, или же правила связи задаются в стандартном конфигурационном файле. Фреймверк берет на себя проверки URL и программисту не нужно самому писать условия, что вот если GET переменная do равна newpost, то нужно запустить функцию donewpost(), а если равна login, то выполнить функцию login(). Очень легко в настройках (и htaccess) сделать так, что адрес site.ru/index.php?r=mail/fixed&adr=24 превращается в какой нибудь site.ru/fixmail/24. Не нужно вообще самому писать SQL запросы и париться по поводу проверки на SQL-инъекции. Работа с базой данных происходит посредством создания переменной класса, который соответствует строке таблицы. Поиск нужной строки, добавление и другие операции уже прописаны во фреймверке. Не нужно изобретать велосипед, создавая с нуля свои функции по проверке введенных пользователем данных, как то, определять, что строка является e-mail адресом и т.д.

Что у меня не получилось. Само по себе использование фреймверков это хорошо, но использовать их тоже можно по-разному. Как утверждается, есть эталонный стиль программирования на Yii — “тонкие контроллеры, толстые модели”, то есть, когда вся оригинальная часть проекта, то, как происходит обработка данных, находится в php файлах — моделях, в которых прописан класс, отвечающий структуре данных, с которыми работает проект. У меня же получилось наоборот — “тонкая модель, толстые контроллеры”, что, наверное, типично для программиста-костыльщика, который впервые столкнулся с таким инструментом, как фреймверк.

Если вам понравился материал, пожалуйста, поделитесь им с друзьями: