Як почати програмувати на PHP з нуля (самостійно). Чому у багатьох нічого не виходить? Особистий досвід ... проб і помилок
Всім доброго часу доби!
Напевно, кожен з нас переглянувши фільми про хакерів і крутих програмістів - хотів би хоч трохи розбиратися в цій справі. І зауважу, що ні-ні, та мені кидають подібні питання (хоч і вмію програмувати, але я далеко не професійний програміст. А людям далеким від сфери 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 ++)
Ну і також порекомендував би використовувати який-небудь командер - тому що в провіднику дуже незручно переміщатися по різних папках, і відкривати відразу кілька файлів (губишся і забуваєш, що де знаходиться). Я б порекомендував вибрати Total Commander (дуже зручний і багатофункціональний командер).
Перший скрипт: підготовка!
1) Після завантаження та установки OpenServer, у вас в обраному місці на диску повинна бути однойменна папка - в моєму випадку це "e: \ openserver5.2 \" . У цій папці повинен бути каталог "domains" - в ньому вам потрібно створити папку з ім'ям вашого сайту (наприклад, "my-site.ru" - приклад нижче).
Запам'ятайте назву цієї папки, саме її і потрібно буде набирати в адресному рядку браузера при написанні скриптів.
OpenServer - приклад створення "сайту" (локально)
2) Далі створіть в каталозі "my-site.ru" файл "index.php" і впишіть в нього наступні рядки:
echo 'Привіт Мир!' ;
Привіт світ! Перша "програма"!
Збережіть файл.
Примітка: якщо хто перший раз працює з php, зверніть увагу на команду 'echo' - значить вивести на екран всі, що знаходиться після неї в лапках.
3) Потім запустіть OpenServer (або перезавантажте його, якщо він у вас був запущений). Також закрийте і відкрийте знову браузери. Це потрібно для того, щоб OpenServer зміг змінити деякі файли у вашій Windows: щоб наш створений сайт "my-site.ru" став відкриватися в вашому браузері.
OpenServer - запускає локальний веб-сервер
Взагалі, якщо OpenServer був вдало запущений - у вас в треї повинен горіти зелений прапорець (якщо він червоний або жовтий, спробуйте перезапустити його ще раз. В деяких випадках, необхідно запускати його від імені адміністратора. У будь-якому випадку, червоний прапорець - працювати надалі не дозволить ...) .
OpenServer - запущений, працює
4) Власне, залишилося набрати в адресному рядку браузера наш " my-site.ru " (без лапок), і він покаже вітання зі створеного файлу index.php (див. Скрін нижче).
Працює!
5) Зверніть увагу, що якщо в першому прикладі ми відразу ж виводили рядок тексту, то в наступному прикладі я трохи змінив код. Як правило, при розробці скриптів маєш справу з змінними , в яких можуть міститися різні дані: рядки, числа і т.д.
Давайте створимо одну змінну ( "$ p") і внесемо в неї наш текст. Приклад нижче:
$ P = 'Привіт Мир!';
echo $ p;
перша змінна
Як показано нижче, результат буде один і той же! Тобто браузер також виведе нашу рядок. Однак, код дещо інший: тепер текст міститься в змінної "$ p", яку ми і виводимо ...
Виводимо дані з змінної
6) Ще один показовий приклад нижче. Цього разу я створив дві змінних "$ p" і "$ p2", і потім з'єднав ці рядки, і помістив їх в змінну "$ p3". Зверніть увагу, що рядки з'єднуються за допомогою простої точки.
$ P = 'Привіт Мир!';
$ P2 = 'Це я!';
$ P3 = $ p. $ P2;
echo $ p3;
Ще один приклад (дві змінної)
Результат передбачуваний ...
Працює ...
Звертаю увагу, що всі приклади рекомендується забивати вручну для більш швидкого розуміння і освоєння.
КРОК 3 - розбивка завдання на складові. Налагодження кожного кроку
Мабуть, це найважливіший крок для початку програмування, заради нього я і починав цю статтю ...
Яка б складна була ваша задача, яку ви хочете вирішити, умовно її можна розбити на три етапи:
- отримання вихідних даних (введення даних);
- перетворення даних;
- висновок даних: на екран, або просто в змінну. (Див. Скріншот нижче: один із прикладів статті я умовно розбив на ці три кроки, щоб було зрозуміло про що мова)
На які етапи можна розбити скрипт
Як правило, найбільшу складність викликають етапи отримання та перетворення даних . І багато початківці не уявляють, як можна написати код з 100 рядків, не заплутатися і не помилитися в них.
Насправді можна після кожного рядка коду дивитися, що у вас міститься в змінних. І поступово, дописуючи по одному рядку коду, і дивлячись як змінюються змінні, привести їх до потрібного вигляду (і вирішити задачу!). Для цього в PHP є чудові функції "var_dump ($ p);" і "print_r ($ p);".
І початківцям я рекомендую постійно їх використовувати! Так, ось так от, програмування іноді така нудна штука ...
Розгляну нижче на прикладі.
Ось уявіть, ви не знаєте, що у вас є в змінної "$ p3" (в коді, в прикладі нижче, ви бачите рядок, яка в неї завантажується, і по ідеї вона там і повинна бути. Але в більш складних реальних задачах - трапляється таке не завжди, в змінної може виявитися взагалі повна "каша", замість потрібного рядка ...).
Так ось, щоб побачити що в змінної, ви просто після неї вставте команду "var_dump ($ p3);" (і збережіть файл).
Приклад з var_dump
В результаті в браузері (при оновленні сторінки), ви побачите, що вивелося "string (31) ....". Тобто var_dump вам повідомив тип даних (string - рядок) і довжину цього рядка (31 - символ). Це дуже корисно при налагодженні довгих програм (скриптів)!
string (31)
Як приклад, перед "var_dump ($ p3);" я присвоїв змінної $ p3 значення 1. Результат іншої (див. Нижче).
Якщо в змінну додати число
Int (1)
Приклад: читання текстового файлу і вирізка першого речення
Все, що написав вище, добре б пояснити на прикладі. Як приклад взяв просту задачу: відкрити текстовий файл, знайти в ньому першу точку (тобто кінець пропозиції), і вирізати все від початку файлу до цієї точки.
З одного боку, може здатися складно для тих, хто ніколи не займався PHP. З іншого боку - розбивши завдання на складові і скориставшись налагодженням (var_dump), можна написати навіть складніші речі ...
І так, це завдання логічно розбити на кілька етапів:
- прочитати текстовий файл в змінну;
- знайти точку в текстовому файлі (тобто дізнатися її порядковий номер, наприклад, 35-й символ);
- відрізати шматок рядка: від самого першого символу, до точки (до її порядкового номера).
- вивести отриманий результат на екран.
1) Читання файлу в рядок
Як текстового файлу - я взяв текст цієї статті, і помістив його в файл "text.txt", який скопіював в папку "e: \ openserver5.2 \ domains \ my-site.ru \" (чи то пак, поклав його поруч з "index.php").
Далі необхідно знайти функцію для вирішення першої складової: читання файлу в змінну. Тут відмінно допомагає "Google": запит виду "PHP читання файлу" справляється зі своїм завданням і допомагає знайти функцію file_get_contents () - її і застосовуємо!
До речі, в цьому плані рекомендую довідник //php.net (відмінний помічник!).
$ P = file_get_contents ( 'text.txt'); // прочитали файл в змінну
var_dump ($ p);
Читаємо файл в змінну
В результаті, якщо все ввели правильно, ми побачимо зміст змінної "$ p": в ній буде довгий текст (рядок). Якщо у вас не так - десь була допущена помилка ...
string (одна тисяча двісті сімдесят вісім)
По суті це наші вихідні дані. Тепер нам потрібно знайти першу точку ( ".") В статті.
2) Пошук символу точки
Взагалі, в PHP функцій для роботи з рядками досить багато. Для пошуку першої точки в цьому прикладі я вирішив взяти " strpos (); ". Нижче я не наводжу повний текст коду скрипта, однак, зверніть увагу на саму функцію і на те, яку змінну я додав в var_dump (ту, в якій повинен виявитися порядковий номер точки, тобто "$ t", а змінна "$ p "- нами вже налагоджена в першому кроці, в ній міститься текст).
$ T = strpos ($ p, '.');
де: $ p - змінна в якій шукаємо потрібний символ;
'.' - той, символ, який шукаємо.
Пошук точки
223 - символ, це точка. Ми її знайшли!
3) Відрізка рядки до точки
Для обрізки рядків в PHP є така функція, як substr (). Користуватися їй дуже просто, покажу на прикладі:
$ S = substr ($ p, 0, $ t);
де:
$ P - рядок, від якої будемо відрізати;
0 - порядковий символ початку (початок потрібного шматка);
$ T - порядковий символ кінця (кінець потрібного шматка). У нашому прикладі це точка, яку ми знайшли.
У підсумку, повний код буде виглядати так:
$ 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 годин в день (це реально так, можете перевірити на собі - навіть у вихідний дня не зможете більше). Так, що для початку вивчення свого нового ремесла - цілком можна годинку викроїти вранці або ввечері в кінці робочого дня, десь "вкрасти" частина вихідного дня.
Якщо буде виходити, напрацюєте якийсь досвід і т.д. - можете спробувати взяти відпустку і влаштуватися кудись стажистом (м.б. на пів-ставки), подивитися, чи все сподобається і вийде ...
Також не зайвим буде мати фінансову "подушку" на чорний день, а то мало-мало, раптом нова робота не виправдає очікувань. Принаймні, такий підхід не зажене вас у важку життєву ситуацію, якщо щось піде не так ...
*
Ну а я на цьому свій "мануал" завершую. Якщо у вас є доповнення по темі або критика - то вони вітаються (коментарі відкриті).
Всього найкращого!