14 Февраль 2011

Изучаем PHP вместе с Андреем Морковиным. Введение

 

Приветствую вас, уважаемый читатель!

Сегодня я предлагаю перейти от изучения программирования внешнего вида страницы (html-верстки, JavaScript) непосредственно к программированию движка сайта.

Вооружившись знаниями принципов блочной HTML верстки, которые можно почерпнуть из моего бесплатного видеокурса, мы займемся наполнением статических HTML-страниц жизнью с помощью языка программирования веб-сценариев PHP и открытого объектно-ориентированного фреймворка Kohana.

Я планирую опубликовать цикл статей, для начинающего веб-программиста, основной целью которого будет попытка облегчить порог вхождения новичка в сложную тему разработки сайта на PHP.

Как я уже успел заметить, сайт мы будем строить на фреймворке Kohana. Это довольно мощный и удачно получившийся веб-фреймворк, включающий в себя все те нововведения в подходе к PHP-программированию, которые возникли за последние годы и считаются правильными и оправданными среди маститых программистов. Это и объектно-ориентированный подход, и модель-контроллер-вид парадигма (не пугайтесь заумных слов, после обучения по данному курсу эти понятия будут для вас элементарными).

Фреймворк позволит, используя отточенным образом реализованные в нем решения, как из кубиков собирать наш проект. Уже готовые куски кода, написанные профессионалами — вот что это за кубики.

Кроме того, фреймворк Kohana позволяет на 100% использовать столь модный, среди современных PHP-программистов, объектно-ориентированный подход (ООП). На протяжении данного курса мы обязательно познакомимся с прелестями ООП. А еще и разделение кода парадигмой MVC... Так что подписывайтесь на RSS или получайте свежие статьи на эл. почту дабы не пропустить самое интересное.

Объектно-ориентированный подход

Пояснить данную философию я попробую при помощи притчи:

Был Мир и был Бог. Бог решил населить маленькую зеленую планету людьми. Создал он Адама и Еву, наделил он их способностью бегать, прыгать и выполнять другие физиологически необходимые действия и довольный пошел отдыхать.

Вернувшись после отдыха Он решил увеличить народонаселение. Но, поскольку у Бога имелись другие неотложные дела, на развлечение оставалось мало времени. И решил Он не обучать каждого вновь созданного человека физиологическим действиям, а один раз описать всю физиологию по принципу Адама и Евы. Сказано — сделано, описал и назвал Он это описание классом. Да будет у этого класса имя «человек разумный» провозгласил Он. И стало так.

На основе класса были сгенерированы экземпляры класса под именами Адам2, Ева2 и пошло дело.

Поскольку все физиологические функции были описаны в классе, не сложно догадаться, что экземпляры класса обладали ими априори. Вот такая экономия божественного времени получилась.

И решил Бог снова уделить время развлечению с людьми и миром. И захотел Он научить людей читать книги, но божественного времени на развлечение оставалось мало и не хотелось Ему разбираться в описании старого класса «человек разумный». Создал Он новый класс под названием «человек читающий» и обучил он его процессу чтения книг (взять книжку с полки, сесть в кресло, открыть оглавление...), а физиологические функции класс «человек читающий» унаследовал от класса «человек разумный». И стало так.

Следующий класс «человек цифровой» унаследовал умение читать книги от «человека читающего», физиологические функции от «человека разумного» и новым его умением стало протирание штанов перед компьютером.

Ваша бабушка умеет пользоваться компьютером? Нет? – Это потому, что она экземпляр класса «человек читающий» и «человек, смотрящий сериалы».

И еще пару слов притчи.

Бог решил назвать функцию экземпляра класса (например, способность читать книги) странным словом — метод.

А характеристики экземпляра класса (у каждого экземпляра класса «человек разумный» есть характеристики (рост, вес, цвет глаз, длина рук), это что-то вроде переменных) — полями.

И стало так. Понятно?

Модель-контроллер-вид

Долгое время в веб-разработке царил стиль программирования, смешивающий воедино HTML, отвечающий за логику отображения (какой текст будет абзацем, какой заголовком, где поставить картинку...), и PHP, отвечающий за бизнес-логику (вывод той или иной статьи из базы данных, авторизацию пользователя, сохранение комментариев...).

У реализованного таким образом сайта отсутствует гибкость, модификация его функционала — задача не из легких, а уж если речь зайдет о передаче такого проекта другому программисту...

Не зря данный стиль программирования называется говнокодингом.

На смену говнокоду пришел объектно-ориентированный подход с применением стиля программирования «модель-контроллер-вид».

Дабы не плодить говнокод, в фреймворке Kohana реализована возможность разделить описание класса, создание конкретного экземпляра класса и отображение результата посетителю по трем различным файлам:

  • Класс описывается в модели.
  • В контроллере создается экземпляр класса. Контроллер получает значения переменных от пользователя и передает их на обработку модели. Полученные от модели значения контроллер возвращает в вид.
  • Вид отображает внешнее представление страницы.

Таким образом вся программная бизнес-логика оказывается в контроллере и модели, а логика отображения в виде.

Кроме того, Kohana избавляет программиста от необходимости каждый раз изобретать велосипед. Все необходимые в программировании web-сценария операции уже описаны в моделях фреймворка и ими можно воспользоваться.

Если что-то, рассказанное в данной статье осталось для вас загадкой, не расстраивайтесь, я поясню все вышесказанное еще раз в формате видеоурока. До встречи в следующих публикациях. Я не заставлю долго ждать :)

С уважением, Андрей Морковин.

Следующая статья курса >>

MAXCACHE: 0.87MB/0.00032 sec