Антон Шевчук // Web-разработчик

Что должен знать начинающий PHP разработчик // PHP


Такой вопрос мне достаточно часто задают, и я таки решился на него ответить.

Хотел было написать очередную статью о собеседованиях, но мне кажется формат себя изжил, так что читаем и мотаем на ус.

Фундамент

Соображать и использовать Google. Первое оценить сложно, для этого придумано много «дурацких» вопросов для собеседований. Второй пункт либо прививается в первые дни испытательного срока, либо разработчик владеет им изначально, иной вариант никто не рассматривает…

Общепознавательное

У меня есть вопрос для собеседования на общее развитие, что происходит после ввода http://domain.com/index.php и нажатия enter, вы должны рассказать следующее:

  • откуда и как браузер узнаёт IP адрес сервера
  • почему наш запрос будет обрабатывать apache
  • почему apache запустит PHP для обработки index.php
  • каким образом PHP обрабатывает скрипт index.php

Я таки опять возвращаюсь к собеседованиям, и манит меня прям

Из чего состоит HTTP запрос/ответ (да откройте же firebug или что у вас там установлено и посмотрите)
Установка связки Apache+PHP+MySQL — потренируйтесь, это ой как надо.
Таки немного о linux — о различиях файловых систем в сравнении с windows, о раздаче прав (chmod) и как выйти из vi без сохранения.

Отдельно стоит упомянуть о гигиене кода — необходимо соблюдать стандарты кодирования, из множества существующих рекомендую стандарты кодирования Zend Framework’а, ну а лучше еще ознакомиться с соответствующими PSR

Пару-тройку дней неделя потребуется на усвоение базовых знаний.

PHP

Основы основ — получение и обработка входящих параметров.

Отправляем форму:

<form action="index.php?a=12">
    <input type="hidden" name="b" value="6"/>
    <input type="submit" value="Calc!">
</form>

Листинг index.php:

бл… аплоадом картинок)

Должны знать как работает механизм сессий – т.е. что происходит от момента вызова session_start, и каким боком это всё связано с cookies (помните я говорил о HTTP?).
Знать для чего служит include, require и какая между ними разница.
Разницу между echo и print не только знать, но и понимать.
Таки научиться работать с объектами, понимать разницу между абстрактным классом и интерфейсом.

Чем больше опыта, тем лучше, но основы вы подтяните за неделю, ОПП потребует еще недельку-другую.

SQL

Основы синтаксиса SQL. Немного вникнуть в MySQL и понимать различия между MyISAM и InnoDB.

Знать как работают LEFT/RIGHT/INNER JOIN’ы — наглядно в статье Visual Representation of SQL Joins (ссылка на картинку для ленивых — Visual_SQL_JOINS_orig.jpg O_o)

Уметь спроектировать базу данных для небольшого проекта. Вот вам требования к БД библиотеки:
В базе данных должна храниться следующуя информация:

  • Что за книги у нас есть в наличии
  • Авторы книг
  • Посетители библиотеки
  • Библиотекари

Позволяет выполнить следующие запросы:

  • Который вытащит всех авторов, которых читает посетитель “Иванов”
  • Который позволит узнать кто на данный момент читает книги более 3-х суток

Переделать БД, т.к. в библиотеке зачастую больше, чем один экземпляр книги, а надо знать какой именно экземпляр брал посетитель.

Сосредоточенного изучения в течении недели вам хватит для выполнения данного задания, для реальной работы этого будет маловато.

HTML и CSS

Сверстайте пару страниц, от и до (HTML должен быть валидным). Не слушайте, что это работа дизайнера/верстальщика/кого-то еще. Поверьте моему опыту — вам отдадут свёрстанную страницу, никто за вас не будет интегрировать HTML шаблон в вашу систему, так что знание HTML и CSS в обязательном порядке.
Забудьте о том, что Smarty создан для верстальщиков, и они вам будут готовые шаблоны отдавать — это сказки. О Smarty тоже забудьте, хотя нет — иметь представление что это такое конечно надо, а вот использовать — нет.

Должны понимать CSS следующего содержания:

#my p.sel:first-line, .main li li a:hover + span {
    color:#f00; /* Что это за цвет? Включи логику! */
}

Узнать что есть блочная модель, да как работает float. Что есть margin и padding.

Дней пять недельки полторы вам хватит для освоения базовых навыков верстальщика.

JavaScript

Знать: синтаксис, о том как работают события, понимать что такое замыкание, и как работает AJAX. Это немного, изучение данных вопросов у вас не займет более недели. Рекомендую прочитать учебник Ильи Кантора.
Далее прочитайте первые шесть частей из моей серии «jQuery для начинающих» — это еще неделька на усвоение материала.

Еще чуть-чуть напрягов

Понимание шаблона MVC. Знакомство с каким-нить фреймворком (Zend Framework, Symfony, Yii, и т.д.). Можно пройти Quick Start от Zend Framework’а.
Научиться работать с БД посредством PDO. Знать что есть SQL-инъекция.
Познакомиться с какой-нить современной системой версий (да хоть с SVN)

И на что я могу расчитывать?

Два месяца изучения, и вы уже сможете претендовать на должность Junior PHP разработчик. Ответ на меркантильный вопрос смотрите на DOU.

P.S. Этот топик на хабре был конечно же заминусован, но я остался при своём мнении, и лишь слегка скорректировал сроки обучения, и да — описанный процесс обучение подразумевает, что вы уже знакомы хоть чуточку с программированием, хотя бы на уровне университетской программы.

© Антон Шевчук 2007-2016