Как начать программировать на PHP с нуля (самостоятельно). Почему у многих ничего не получается? Личный опыт... проб и ошибок

Автор: Alexandr, 15.05.2018 Рубрики: Компьютерная грамотность

programmirovanieВсем доброго времени суток!
Наверное, каждый из нас просмотрев фильмы о хакерах и крутых программистах - хотел бы хоть немного разбираться в этом деле. И замечу, что нет-нет, и мне кидают подобные вопросы (хоть и умею программировать, но я далеко не профессиональный программист. А людям далеким от сферы IT - это вовсе не объяснить...).

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

Со временем, получилось разобраться с PHP до уровня написания своей простенькой CMS (CMS - это движок для сайта) и помогла мне в этом одна статья (к сожалению тот ресурс уже не существует в сети, однако, я очень благодарен тому автору за этот "пинок" в нужном направлении).

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

*

С чего начать программировать (на PHP)

ШАГ 1 - увлечение, желание решить какую-то задачу

Пожалуй, самое главное - это "загореться" какой-то задачей (без этого изучать что-то новое - очень трудно). Например, мне в своё время очень было нужно (ОЧЕНЬ!), чтобы скрипт на PHP мог прочитать определенный текстовый файл, и вырезать из него некоторые кусочки согласно моему шаблону. С одной стороны - вроде бы все просто, с другой - для человека, который никогда и 2-х строк кода самостоятельно не написал, задача архи-сложная!

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

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

Пока вы сами не начнете набирать код и смотреть, что у вас "выводится", что у вас в переменных, и как в них меняются данные при использовании каких-то функций - начать программировать вы не сможете (это чисто мое мнение!). Никакие "умные" книги вам не помогут.

Мечтать полезно!

Мечтать полезно!

Кстати, у многих начинающих (и у меня в том числе когда-то) есть одна большая ошибка: они очень много времени готовятся, скачивают различные курсы, видео. Потом все это смотрят, изучают, записывают в блокноты и т.д. Но не делают самого главного - не начинают сами набирать код, и смотреть как он выполняется...

Ладно, теперь ближе к практике (философию заканчиваю).

 

ШАГ 2 - установка инструментов Denwer, Open Server, Notepad++, Total Commander. Начало!

Для написания своих первых скриптов и экспериментов - совсем не обязательно покупать хостинг. Гораздо лучше использовать бесплатный локальный веб-сервер: Denwer или Open Server (лично я рекомендую Open Server, и именно в нем покажу, как и что делать). Кстати, если выберите Open Server - то для начала хватит самой минимальной версии (прим.: просто на сайте их несколько, с разными библиотеками).

Для непосредственного набора кода (текста) удобно использовать спец. блокнот с подсветкой синтаксиса. Мне импонирует в этом плане Notepad++. Простой, легкий, бесплатный и удобный блокнот (существенно больше возможностей по сравнению с встроенным в Windows блокнотом).

Привет Мир! (Notepad++)

Привет Мир! (Notepad++)

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

 

Первый скрипт: подготовка!

1) После скачивания и установки OpenServer, у вас в выбранном месте на диске должна быть одноименная папка - в моем случае это "e:\openserver5.2\". В этой папке должен быть каталог "domains" - в нем вам нужно создать папку с именем вашего сайта (например, "my-site.ru" - пример ниже).

Запомните название этой папки, именно ее и нужно будет набирать в адресной строке браузера при написании скриптов.

OpenServer - пример создания сайта

OpenServer - пример создания "сайта" (локально)

 

2) Далее создайте в каталоге "my-site.ru" файл "index.php" и впишите в него следующие строки:

<?php

echo 'Привет Мир!';

Привет Мир! Первая программа!

Привет Мир! Первая "программа"!

Сохраните файл.

Примечание: если кто первый раз работает с php, обратите внимание на команду 'echo' - значит вывести на экран все, что находится после нее в кавычках.

 

3) Затем запустите OpenServer (или перезагрузите его, если он у вас был запущен). Также закройте и откройте вновь браузеры. Это нужно для того, чтобы OpenServer смог изменить некоторые файлы в вашей Windows: чтобы наш созданный сайт "my-site.ru" стал открываться в вашем браузере.

OpenServer - запускает локальный веб-сервер

OpenServer - запускает локальный веб-сервер

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

OpenServer - запущен, работает

OpenServer - запущен, работает

 

4) Собственно, осталось набрать в адресной строке браузера наш "my-site.ru" (без кавычек), и он покажет приветствие из созданного файла index.php (см. скрин ниже).

Работает!

Работает!

 

5) Обратите внимание, что если в первом примере мы сразу же выводили строку текста, то в следующем примере я немного изменил код. Как правило, при разработке скриптов имеешь дело с переменными, в которых могут содержаться различные данные: строки, числа и т.д.

Давайте создадим одну переменную ("$p") и внесем в нее наш текст. Пример ниже:

<?php

$p = 'Привет Мир!';

echo $p;

Первая переменная

Первая переменная

Как показано ниже, результат будет один и тот же! Т.е. браузер также выведет нашу строку. Однако, код несколько другой: теперь текст содержится в переменной "$p", которую мы и выводим...

Выводим данные из переменной

Выводим данные из переменной

 

6) Еще один показательный пример ниже. В этот раз я создал две переменных "$p" и "$p2", и затем соединил эти строки, и поместил их в переменную "$p3". Обратите внимание, что строки соединяются при помощи простой точки.

<?php

$p = 'Привет Мир!';
$p2 = ' Это я!';

$p3 = $p.$p2;

echo $p3;

Еще один пример (две переменной)

Еще один пример (две переменной)

Результат предсказуем...

Работает...

Работает...

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

 

 

ШАГ 3 - разбивка задачи на составляющие. Отладка каждого шага

Пожалуй, это самый важный шаг для начала программирования, ради него я и начинал эту статью...

Какая бы сложная не была ваша задача, которую вы хотите решить, условно ее можно разбить на три этапа:

  1. получение исходных данных (ввод данных);
  2. преобразование данных;
  3. вывод данных: на экран, или просто в переменную. (см. скриншот ниже: один из примеров статьи я условно разбил на эти три шага, чтобы было понятно о чем речь)
На какие этапы можно разбить скрипт

На какие этапы можно разбить скрипт

Как правило, наибольшую сложность вызывают этапы получения и преобразования данных. И многие начинающие не представляют, как можно написать код из 100 строчек, не запутаться и не ошибиться в них.

На самом деле можно после каждой строки кода смотреть, что у вас содержится в переменных. И постепенно, дописывая по одной строке кода, и смотря как меняются переменные, привести их к нужному виду (и решить задачу!). Для этого в PHP есть замечательные функции "var_dump ($p);" и "print_r ($p);".

И начинающим я рекомендую постоянно их использовать! Да, вот так вот, программирование иногда такая скучная штука...

Рассмотрю ниже на примере.

Вот представьте, вы не знаете, что у вас есть в переменной "$p3" (в коде, в примере ниже, вы видите строку, которая в нее загружается, и по идее она там и должна быть. Но в более сложных реальных задачах - случается такое не всегда, в переменной может оказаться вообще полная "каша", вместо нужной строки...).

Так вот, чтобы увидеть что в переменной, вы просто после нее вставьте команду "var_dump ($p3);" (и сохраните файл).

Пример с var_dump

Пример с var_dump

В результате в браузере (при обновлении странички), вы увидите, что вывелось "string(31)....". Т.е. var_dump вам сообщил тип данных (string - строка) и длину этой строки (31 - символ). Это очень полезно при отладке длинных программ (скриптов)!

string 31

string(31)

В качестве примера, перед "var_dump ($p3);" я присвоил переменной $p3 значение 1. Результат другой (см. ниже).

Если в переменную добавить число

Если в переменную добавить число

Int 1

Int(1)

 

 

Пример: чтение текстового файла и вырезка первого предложения

Все, что написал выше, хорошо бы пояснить на примере. В качестве примера взял простую задачу: открыть текстовый файл, найти в нем первую точку (т.е. конец предложения), и вырезать все от начала файла до этой точки.

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

И так, эту задачу логично разбить на несколько этапов:

  1. прочитать текстовый файл в переменную;
  2. найти точку в текстовом файле (т.е. узнать ее порядковый номер, например, 35-й символ);
  3. отрезать кусок строки: от самого первого символа, до точки (до ее порядкового номера).
  4. вывести полученный результат на экран.

 

1) Чтение файла в строку

В качестве текстового файла - я взял текст этой статьи, и поместил его в файл "text.txt", который скопировал в папку "e:\openserver5.2\domains\my-site.ru\" (то бишь, положил его рядом с "index.php").

Дальше необходимо найти функцию для решения первой составляющей: чтения файла в переменную. Здесь отлично помогает "Google": запрос вида "PHP чтение файла" справляется со своей задачей и помогает найти функцию file_get_contents() - ее и применяем!

Кстати, в этом плане рекомендую справочник http://php.net (отличный помощник!).

<?php
$p = file_get_contents('text.txt'); //прочитали файл в переменную
var_dump ($p);

Читаем файл в переменную

Читаем файл в переменную

В результате, если все ввели правильно, мы увидим содержание переменной "$p": в ней будет длинный текст (строка). Если у вас не так - где-то была допущена ошибка...

string 1278

string(1278)

По сути это наши исходные данные. Теперь нам нужно найти первую точку (".") в статье.

 

2) Поиск символа точки

Вообще, в PHP функций для работы со строками довольно много. Для поиска первой точки в этом примере я решил взять "strpos();". Ниже я не привожу полный текст кода скрипта, однако, обратите внимание на саму функцию и на то, какую переменную я добавил в var_dump (ту, в которой должен оказаться порядковый номер точки, т.е. "$t", а переменная "$p" - нами уже отлажена в первом шаге, в ней содержится текст).

$t = strpos($p, '.');

где: $p - переменная в которой ищем нужный символ;

'.' - тот, символ, который ищем.

Поиск точки

Поиск точки

223 - символ, это точка. Мы ее нашли!

223 - символ, это точка. Мы ее нашли!

 

3) Отрезка строки до точки

Для обрезки строк в PHP есть такая функция, как substr (). Пользоваться ей очень просто, покажу на примере:

$s = substr ($p, 0, $t);

где:

$p - строка, от которой будем отрезать;

0 - порядковый символ начала (начало нужного куска);

$t - порядковый символ конца (конец нужного куска). В нашем примере это точка, которую мы нашли.

В итоге, полный код будет выглядеть так:

<?php
$p = file_get_contents('text.txt'); //прочитали файл в переменную
$t = strpos($p, '.'); //ищем первую точку в строке $p
$s = substr ($p, 0, $t); //отрезаем строку от 0-го символа до точки
var_dump ($s);

Отрезаем строку

Отрезаем строку

Обратите внимание, что мы также после этого шага поменяли переменную в "var_dump ($s);". Таким образом, мы видим, что наша строка стала маленькой, всего 223 символа. Практически решили задачу, осталось немного...

Отрезали!

Отрезали!

 

4) Задачка решена!

В общем-то, заменив "var_dump" на "echo" - получаем решенный пример. Теперь в браузере при открытии "my-site.ru" показывается первое предложение из текстового файла.

Скрипт готов!

Скрипт готов!

Обратите внимание, что "echo" не выводит подробные сведения о типе данных. Вы видите просто строку...

Преложение было вырезано

Предложение было вырезано

 

ШАГ 4 - новая задача...

Как вы понимаете, задача в примере выше - это лишь капля в Море! Разумеется, ее можно было решить в одну строчку и более изящными способами (все, что показал выше, это всего лишь пример, чтобы показать суть и как можно двигаться, чтобы создать скрипт с сотнями строк и, решающий куда более сложные задачи).

Разумеется, можно искать не только точку, но и последовательности определенных символов, картинки, теги и т.д. Читать можно не только файл (т.е. получать из него исходные данные), но и странички других сайтов, читать текущий URL-адрес пользователя, получать данные из формы, которую заполняет пользователь и т.д.

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

Причем, с каждой новой строкой - ваш опыт, скорость разработки, и умения будут прокачиваться. А если так, возможно я и не зря написал эти строки...

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

 

О чем не говорят в рекламе книг и курсов

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

1) Большая нагрузка на глаза

Сидеть весь день и разбираться в коде, редактировать его и т.д. - это далеко не то же самое, что целый день смотреть фильм, расслабившись в кресле. Не верите - попробуйте хотя бы пол-дня вдумчиво редактировать документ Word или Excel (примерно сопоставимо).

2) Необходимость постоянно учиться

Сейчас во многих профессиях нужно всегда учиться, но программистам - десятикратно больше! Вообще, в целом, сфера IT, шагает каждый год семимильными шагами вперед, только успевай за ней поспевать (вспомните, лет 10 назад у нас интернет-то стал только в городах появляться, а сейчас уже даже в селах говорят про биткоины...).

3) Работа сидячая

Если во многих сферах, вы часть рабочего дня можете проводить где-то "прогуливаясь", то у программиста рабочее место - только за ПК, и нигде более... Такой образ жизни, все же, со временем начинает сказываться на здоровье: спина, кисти рук, плечи, глаза... - к концу дня начинают сильно уставать.

4) Зарплаты рядовых программистов не всегда высокие

Пока вы не наберись опыта, скорее всего, вы не будете получать сильно больше, относительно других сфер деятельности. На мой взгляд эра слишком высоких зарплат в этой сфере проходит (прошла?). Однако, труд хороших специалистов в этой сфере оплачивается достойно!

5) Скучно решать чужие задачи...

Если вам интересно программировать и "воплощать" свою идею в реальность, то это совсем не значит, что будет интересно решать чужие задачи - это совсем не то! Порой, копаться в коде становится настолько скучно и серо..., что хоть "вой" (думаю, эти строки поймут далеко не все).

 

PS: Стоит ли бросать свою текущую работу, и пытаться стать программистом?

Очень популярный вопрос... Особенно на волне очень высоких зарплат некоторых категорий программистов.

Прям сразу все бросать - однозначно нет (по крайней мере, моя точка зрения). Как бы там не было и чтобы вы не решили, эффективно заниматься, нагружать мозг и изучать что-то новое - человек способен не более 2-2,5 часов в день (это реально так, можете проверить на себе - даже в выходной день не сможете больше). Так, что для начала изучения своего нового ремесла - вполне можно часок выкроить утром или вечером в конце рабочего дня, где-то "украсть" часть выходного дня.

Если будет получаться, наработаете какой-то опыт и т.д. - можете попробовать взять отпуск и устроиться куда-нибудь стажером (м.б. на пол-ставки), посмотреть, всё ли понравится и получится...

Также не лишним будет иметь финансовую "подушку" на черный день, а то мало-ли, вдруг новая работа не оправдает ожиданий. По крайней мере, такой подход не загонит вас в тяжелую жизненную ситуацию, если что-то пойдет не так...

*

Ну а я на этом свой "мануал" завершаю. Если у вас есть дополнения по теме или критика - то они приветствуются (комментарии открыты).

Всего доброго!

Есть 1 комментарий.

  1. den:

    Спасибо за познавательное и простое обьяснение.

Написать комментарий 📎

 

Прикрепить картинку, скрин:

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

  • Интересное
  • Оптимизируем и ускоряем
  • Удаляем вирусы
  • Настраиваем звук
  • Содержание статьи
  •