PHP
May 2012 6

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


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

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

Фундамент


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

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



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

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

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

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

PHP


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

Отправляем форму:
<form action="index.php?a=12">
    <input type="hidden" name="b" value="6"/>
    <input type="submit" value="Calc!">
</form>


А вот и листинг index.php, и в результате работы скрипта мы увидим…:
function some_logic($a, $b = 24) {
    return ($a+$b)/$_REQUEST['b'];
}

$var1 = $_GET['a'];
echo some_logic($var1);


Работа с циклами, массивами и строками. И да, простенькое задание с собеседования (пора угомониться):
// переставьте буквы в словах в обратном порядке
$str = "Hello world!";


Работа с базой данных и с файлами. Для усвоения материала &mdash; вот вам задание: написать анонимную доску объявлений (с блек... аплоадом картинок)

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

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

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

SQL



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

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

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


Позволяет выполнить следующие запросы:
  • Который вытащит всех авторов, которых читает посетитель «Иванов»
  • Который позволит узнать кто на данный момент читает книги более 3-х суток


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

Сосредоточенного изучения в течении недели вам хватит.

HTML и CSS


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

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

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


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

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

JavaScript


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

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


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

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


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

P.S. Есть чем дополнить — пишите комментарии, увидели ошибку — лучше в личку
-29
107.2k 480
Comments 152