У цій статті я хочу відповісти на питання — “що повинен знати Junior PHP розробник у 2016м році?”.
При цьому я постараюся додати побільше посилань на навчальні матеріали, щоб на співбесіді вам не довелося червоніти.
Почасти перед вами оновлена стаття Що повинен знати початківець PHP розробник, а оскільки PHP досить інтенсивно розвивається останнім часом, то мені довелося внести зміни в більшу половину тексту, можете порівняти з цікавості 😉
Пункт номер нуль
Розробник повинен міркувати і вміти використовувати Google. Перше оцінити вкрай складно, для цього придумано багато «дурних» питань для співбесід. Другий пункт прищеплюється в перші дні випробувального терміну. Плюсом буде аккаунт на stackoverflow.com.
Фундамент
Якщо ви твердо маєте намір зайнятися web-розробкою, то перше, що вам потрібно буде зрозуміти – це принцип роботи протоколу HTTP (ці знання можна почерпнути в профільних ВУЗах). Так само ви повинні поверхово знати про існування TCP/IP протоколу і розуміти за що відповідає DNS сервер.
Вибравши для спеціалізації стек LAMP вам слід почати знайомитися з Linux вже зараз:
- встановити дистрибутив, рекомендую ubuntu
- вивчити файлову систему та її особливості
- навчитися використовувати командний рядок
- навчитися редагувати текстові файли в vim/nano
- навчитися виходити із текстових редакторів із збереженням та без 😉
- розібратися з управлінням процесами — переглянути запущені, вбити завислі
- встановити Apache, PHP і MySQL
- дізнатися про SSH
Встановивши Apache — навчитеся його налаштовувати і рестартовать:
- sudo a2enmod …
- sudo a2ensite …
- sudo service apache2 restart
Будьте обережні, Linux затягує, наче тиждень потрібна для пізнання азів, а прокинувся — вже Новий Рік, а ти сидиш і iptables налаштовуєш
Далі MySQL…
SQL/MySQL
Основи синтаксису SQL потрібні практично від всіх програмістів, будь то веб-розробка, або мобільний, вам же треба трохи заглибитися в MySQL і розуміти відмінності між MyISAM і InnoDB. Знати як працюють LEFT/RIGHT/INNER JOIN’и — це наочно роз’яснюється у статті Visual Representation of SQL Joins:
Перевірте свої пізнання — створіть базу даних для обліку вашої домашньої бібліотеки (у вас же є така?), у ній повинні бути наступні сутності:
- книги
- автори книг
- ПІБ тих, хто брав почитати
Грунтуючись на даній структурі даних, ви повинні скласти запити які покажуть вам:
- автора, книги якого найчастіше беруть почитати
- список тих, хто взяв більше однієї книги
SQL можна вивчати у відриві від всього іншого, і він нікому не зашкодить, щоб розібратися на належному рівні з ним вам буде потрібно тиждень старанного вивчення без перерв на погратися.
HTML та CSS
Сверстайте пару сторінок, від і до. Не слухайте, що це робота дизайнера/верстальщика/когось ще. Повірте моєму досвіду — вам віддадуть зверстану сторінку, ніхто за вас не буде інтегрувати HTML шаблон у вашу систему, так що знання HTML і CSS в обов’язковому порядку. І забудьте про те, що верстальники будуть готові шаблони вам віддавати — це казки.
Розберіться з селекторами в CSS, наступний код не повинен викликати у вас жаху:
#my p.sel:first-line .main li li a:hover + span {
color:#f00; /* Що це за колір? Включи логіку! */
}
Дізнайтеся що є блокова модель, так як працює float. Що є margin і padding. Чому CSS це каскадна таблиця стилів, і що є таке поняття як специфічність CSS-селектора.
З усім цим можна розібратися за тиждень-два, головне не лінуватися, ну і не варто лізти в нетрі крос-браузерної верстки і анімації. Примочки типу LESS, SASS або БЕМ теж варто залишити на фронт-енд розробників
JavaScript
Незважаючи на те, що PHP це бекенд розробка, знання JavaScript’а вам дуже знадобляться — особливу увагу приділіть вивченню наступних моментів:
- синтаксис знати потрібно в обов’язковому порядку
- розуміти область видимості змінних
- пізнати замикання
- вивчити події, і розібратися з «всплитием»
- AJAX — що за звір, як працює
Це небагато, вивчення даних питань у вас не займе більше тижня, все це дуже наочно є в підручнику Іллі Кантора.
Ще бажано приступити до вивчення jQuery, ось вам підручник і по ньому — jQuery для початківців — це ще тиждень на засвоєння матеріалу.
PHP
Як вам списочок вищеописаних скілів об? І це ми ще не добралися до PHP 😉
PHP починається з основ мови:
- потрібно знати, що таке змінні і константи
- типи даних, приведення типів і порівняння даних
- область видимості змінних
- пріоритети операторів
- побітові операції
- керуючі конструкції
- простору імен
- трохи торкнутися рядкові функції, такі як:
- explode()
- str_replace()
- strpos()
- substr()
- trim()
- але їх куди більше…
- працювати з масивами потрібно постійно функцій багато, я б звернув увагу на наступні:
- array_push()
- array_pop()
- array_map()
- array_keys() і array_values()
- сімейство array_diff і array_intersect
- різні сортування
- пошук по масиву in_array() і array_key_exists()
- робота з файлами і файловою системою теж цілком тривіальна задача
- порекомендую досконально вивчити, як працює підключення файлів
- і зрозуміти як відбувається робота з сесіями
- дізнатися на практиці як обробляти вхідні дані з форм
- попрацювати з базою даних за допомогою PDO
А ще потрібно мати уявлення про моделі PHP:
- спадкування
- область видимості властивостей і методів
- магічні методи
- обробка помилок з допомогою винятків
Додатково потрібно:
- розуміння шаблону MVC
- вміти працювати в IDE відмінною від текстового редактора
- знання англійської на рівні розуміння прикладів на stackoverflow
Так що ще забув, ах да — система контролю версій:
- пройдіть навчалку з Git на Code Academy або GitHub
- почитайте Git Book
- заведіть аккаунт на GitHub
- зберегти в закладки GitHub Guides
PHP через рік
Окремо виділю ті знання, які потрібні від Junior розробника через рік роботи:
Об’єктна модель PHP не повинна викликати спантеличенні на обличчі:
- абстрактні класи
- інтерфейси
- трейты як заміна множинного спадкоємства
- пізніше статичне зв’язування
Патерни проектування пора вже розуміти і використовувати:
- знову повторю про MVC
- Singleton не завжди шкідливий
- Factory
- Depedency Injection
- Active Record
Інші навички та знання:
- знайомство з яким-небудь сучасним фреймворком (нині вже Laravel5, Symfony3, ZF3)
- розібратися з ORM
- composer в обов’язковому порядку
- розуміння нових фіч PHP7
- віртуалізація з Vagrant
- установка і настройка NGINX
- Twitter Bootstrap як тренд у верстці админок
- робота в правильній IDE PHPStorm
- англійська на рівні задати питання на stackoverflow і зловити мінусів
Ну що, ви ще претендуєте на зарплату Junior розробника?