PHP: с чего начать, как учить и что в итоге знать?

Введение

Ровно 2 месяца назад я спрашивал тут о том, как стать профессиональным веб-разработчиком за 7 лет (http://habrahabr.ru/qa/21830/). Сразу стало понятно, что без английского, с которым у меня все не очень гладко, не обойтись. За 2 месяца я подтянул свои знания английского на уровне чтения технической литературы, обзавелся маком и подтянул знания в html5.

К делу

Настало время изучения php. Хотя я его уже учил. Знаю типы данных, функции, mysql на уровне простых запросов, немного ооп и небольшую часть библиотеки GD2. Очень плохо с практикой, то есть не знаю как применять все это в деле. Я смогу написать очень простую систему регистрации с хранением данных в mysql базе; вход с помощью cookie и сессий; гостевую книгу и какой-нибудь простой поиск.

Вопросы


1. Как учить php чтобы реализовывать проекты на нем профессионально?
2. Какие книги стоит для этого читать? Как учить? По сколько часов в день?
3. Как научиться правильно использовать php на практике? Что он может?
4. Какие БД использовать?
5. Что насчет фреймворков?
6. Что такое git (github) и зачем это нужно?
7. Что же нужно знать и уметь в итоге? И сколько времени на это уйдет? Заранее спасибо!
  • Вопрос задан
  • 113550 просмотров
Пригласить эксперта
Ответы на вопрос 7
FanatPHP
@FanatPHP
Чебуратор тега РНР
На первые несколько пунктов попробую написать рекомендации в свободной форме.


Первое и самое главное — чтобы хорошо изучить программирование на РНР, надо хорошо изучить программирование. Это очень важная вещь. Большая часть людей, пишущих на РНР, не имеют ни малейшего представления о программировании. Даже о таких базовых вещах, как форматирование кода, отладка, профайлинг, обработка ошибок, файловые операции. Можно заметить, что я не говорю об ООП. Это совсем отдельная тема, ООП надо учить специально. К сожалению, из 100 человек, которые говорят, что знают ООП, 90 являются банальными копипастерами, выучившими синтаксис, но не понимающими смысла объектов. Но чтобы играть в шахматы, недостаточно знать, как ходят фигуры.


Ещё неплохо бы ответить себе на вопрос — для чего ты хочешь выучить программирование на РНР? Вопрос совсем не праздный. Многие люди смешивают в нем кучу разных понятий. К примеру, здесь уже упоминали CMS. и действительно, если речь идёт о зарабатывании денег, то кастомизация Джюмлы и написание к ней говномодулей в финансовом плане куда более выгодны, чем умение писать что-либо с нуля. Для фриланса, во всяком случае.

Вообще, РНР можно использовать очень по-разному. И для каждого случая это будет свой язык.
  • Можно склепать гостевую или сайт-визитку на «голом» РНР — и ничего плохого или позорного в этом нет. Наоборот — это плюс языка, который годится и для таких целей, не таща за собой пару миллионов строк кода ради сайта из пятисот.
  • Можно написать профессиональный портал, взяв за основу какой-то из существующих фреймворков, и заниматься его развитием.
  • Можно написать кастомный хайлоад проект, для которого нужно будет писать собственный фреймворк опять на голом РНР.
  • Можно, как уже говорилось, клепать сайты на основе какой-нибудь ЦМС.


Вариантов масса! поэтому нужно определиться сначала, чего хочется.


Там выше говорили про JS+CSS — не надо слушать, это полная ерунда. Фронтенд программирование — совсем отдельная вещь, куда больше визуальная, чем абстрактная. И, слава богу, все больше работодателей начинают понимать это. Хотя опять же — если фрилансишь и на все руки мастер — то без этого никуда.

Но если работать хардкорным серверным программистом в команде, то об HTML/JS/CSS нужно иметь только общее представление (поскольку тексты на этих языках являются, вообще-то, практически единственным результатом работы РНР).


А вот что обязательно нужно хорошо знать из сопутствующих технологий — это протокол НТТР, устройство файловой системы, работа c командной строкой в линуксе.


Теперь по остальным

Mysql всё ещё является краеугольным камнем хранения данных в вебе. Нужно знать и понимать джойны, индексы

Фреймворки — обязательно. Тут, правда, стоит проблема выбора, но принципиальной разницы между ними нет. Yii — неплохой выбор.

Гитхаб тебе не нужен, знать его не обязательно. Знать надо git.
А вот что является обязательным для веб-программиста — это умение пользоваться гуглем. Хотя бы на уровне умения скопипастить в поисковую форму сообщение об ошибке или написать вопрос «Что такое git» ;-)

Потому что для работы в команде какую-либо систему контроля версий знать надо, а git является стандартом де-факто. Понимать принцип работы и базовые команды — чекаут, коммит, пуш.
Ответ написан
PHP бесполезно учить отдельно. Его необходимо учить в связке PHP+JS+HTML+CSS+SQL (или какая-нибудь другая). Отсюда следует, что достигнуть профессионального уровня можно только с помощью практики.

Практического опыта можно набраться двумя способами:
— устроиться на работу в качестве практиканта/ученика;
— самому попытаться реализовать свой сложный проект (результат не важен, главное полученный опыт).

Так же могу посоветовать «разобрать» какой-нибудь фреймворк в плане кода, посмотреть его внутренности, как он устроен, как работает.
Ответ написан
metamorph
@metamorph
Я сейчас, наверное, дикую вещь скажу, но php лучше начинать учить с MVC-фреймворков (например, Yii).

Дело в том, что php — язык, всем своим видом так и призывающий писать говнокод. Если начать с фреймворка — мысли потихоньку улягутся по местам, а потом станет интересно, как именно работает такая-то функция, а потом другая функция, а потом… Ну и так далее.

PS. Я начинал с CakePHP, при этом вообще не зная языка (всю жизнь на перле писал). Кейк был хорош своей жесткой политикой в отношении архитектуры приложения (в Yii, кстати, с этим помягче). Ну и как-то слово за слово через пару недель уже первый проект запустил, а потом и с языком вроде разобрался.
Ответ написан
1. Не по книгам «для чайников»
2. Для начинающих — даже не знаю. С такого можно начать. Для уровня чуть выше — Мэтт Зандстра. PHP. Объекты, шаблоны и методики программирования.
3. Тут хорошо ответили, хотя и с CMS не мешало бы потыкаться:)
4. Лучше бы о выборе языка лучше подумал:) Само собой, чаще всего с MySQL используют, двигайся дальше как её освоишь.
5. Yii, например, годный.
6. Git — система управления версиями, разрабатывалась для управления разработкой ядра Linux. Зачем? Дабы не запутаться в изменениях, что внев в код.
GitHub — самый большой сервис для совместной разработки проектов. Бесплатен для open-source, можешь посмотреть исходники многих интересных проектов и даже поучаствовать в разработке.
Ответ написан
@igoravr
Самый хороший вариант это найти себе работу в качестве практиканта или помощника. На работе будут реальные задачи и живые специалисты. Решая реальные задачи, будете изучать документацию и сразу я применять новые знания на деле. Начинать писать свою CMS не стоит. :)
Ответ написан
@niko83
1. Английский конечно важно, но его необходимость для начала карьеры вы переоценили, есть уйма отличных книжек (на русском) (именно книжек, с методичным изложением информации, а не разразненных статей в интернете). Книги по программированию читать нужно регулярно!
2. Когда я начинал, я придумал себе реальный проект и придумывал себе задачи в рамках этого проекта и их решал (что было не понятно смотрел как это реализовано у других, и консультировался у знакомого программиста), изучал чужой код. Не понятные моменты прорабатывал, исследовал.
3. Ходил на собеседования, слушал умные вопросы, ответы на которые я после тщательно прорабатывал.
4. Ни дня без строчки кода.
Ответ написан
@izharskiy
в итоге руби, в крайнем случае питон,
инфа 100%
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы