Od czego zacząć naukę PHP?

W ramach krótkiego podsumowania ostatnich spotkań z cyklu „Women in Technology” postanowiłem zebrać w jednym miejscu większość wskazówek / wytycznych dotyczących rozpoczęcia nauki PHP, a przy okazji zaproponować pomoc z mojej strony. Jak argumentowałem w jednym z poprzednich wpisów, mimo ogromnego zamieszania obecnie wokółJavaScript, PHP jest językiem, który:

  • jest stosunkowo prosty dla początkujących i osób, które nigdy nie miały styczności z programowaniem – dobrze wprowadza w świat programowania aplikacji internetowych;
  • jego przyszłość jest bardzo stabilna (PHP w wersji 7.X wprowadza wiele udogodnień i ciekawych zmian);
  • na rynku jest duże zapotrzebowanie na developerów PHPduża ilość ofert pracy, a stawki coraz bardziej atrakcyjne.

Podstawy protokołu HTTP

Moim zdaniem naukę programowania aplikacji internetowych powinno rozpocząć się od poznania podstaw protokoołu HTTP, jako że to na tym protokole oparta jest komunikacja przeglądarka (klient) – nasza aplikacja (serwer). Niestety często spotykam się z sytuacją, gdzie Developerzey po kilku miesiącach pracy w dalszym ciągu nie są świadomi tego co tak naprawdę dzieje się w momencie, kiedy przeglądarka wysyła żądanie i odbiera odpowiedź z serwera.

Warto na tym etapie wiedzieć, że:

  • protokół HTTP jest protokołem bezstanowym – każde kolejne żądanie nie wie nic o żądaniach, które je poprzedzały;
  • komunikacja odbywa się przez odpowiednio przygotowane komunikaty tekstowe w których wyróżniamy 3 sekcje:
    • 1 sekcja to status odpowiedzi (ang. initial response line);
    • w 2 sekcji znajdują się nagłówki (ang. headers);
    • a trzecia zawiera treść odpowiedzi (ang. content body) i jest to część, którą widzimy bezpośrednio w przeglądarce najczęściej w postaci kodu HTML;
  • wpisując adres w przeglądarce wysyłamy żądanie HTTP (ang. Request) – komunikat tekstowy generowany przez przeglądarkę. Wraz z żądaniem przeglądarka wysyła dodatkowe informacje w postaci nagłówków, np: infomrację o przeglądarce z której korzystamy;
  • serwer generuje odpowiedż (ang. Response): wykonuje kod PHP, łączy się z bazą danych lub zewnętrznymi usługami, jeśli jest to niezbędne do wygenerowania odpowiedzi, np w postaci kodu HTML. Na tej podsatwie przeglądarka renderuje / wyświetla nam odpowiednią stronę;

Dobra książka

Tutaj spotkać się można z bardzo różnymi opiniami, osobiście uważam, że dobra książka na początku nauki to podstawa. Pozwala lepiej zrozumieć poszczególne zagadnienia i usystematyzować wiedzę. Tutriale dostępne w sieci często skupiają się na realizacji konkretnego zadania i pokazują najlepszą / najkrótszą drogą do jego realizacji. Niestety większość z nich jest już dość przestarzała i nieaktualna. Książka w tej sytuacji przekaże wam odpowiednią teorię, wprowadzi w problem i pomoże go zrozumieć. Osobiście polecam ksiązki angielskojęzyczne – język angielski jest w programowaniu niezbędny, większość dokumentacji jest w tym języku i im szybciej zaczniesz się nim posługiwać, tym lepiej. Jeśli jednak nie czujesz się na siłach i wolicz książki w języku Polskim to bez problemu można znależć aktualne i ciekawe pozycje (niestety najnowsze pozycję nie będą dostępne ze względu na czas potrzebny na ich przetłumaczenie). Kilka słów na temat książek, które polecam napisałem tutaj. Dla kompletnie początkujących polecam: Head First PHP & MySQL – która wprowadza w PHP w bardzo przystępny sposób.

Środowisko + IDE

By móc pisać proste skrypty w PHP do niedawna potrzebny był cały stack: LAMP, WAMP, XAMP lub tym podobny zestaw. W tym momencie na początku nauki programowania, nie ma potrzeby nic instalować – możecie wykorzystać gotowe rozwiązania online, które odrazu pozwolą Wam skupić się na zabawie z kodem i na nauce programowania. Osobiście często korzystam z c9.io, które posiada bardzo intuicyjny edytor, dostęp do shella i możliwość podglądu projektu w dedykowanej domenie.

Jeśli jednak wolicie wszystko mieć lokalnie na własnej maszynie polecam darmowego NetBeansa / Eclipse (na dalszym etapie pracy są jednak mało wydajne), który ma praktycznie wszystko czego potrzebujecie. Dla osób, które lubią sobie komplikować naukę już na samym początku wystarczy zwykły edytor tekstowy.

Shell

Nie wiele osób korzysta z takiej możliwości ale w PHP równie dobrze możemy pisać / weryfikować proste skrypt z poziomu interaktywnej konsoli, która bardzo często sie przydaje. Wystarczy wprowadzić polecenie: php -a by uruchomić konsolę PHP do której możemy wprowadzać nasz kod:

Hello World

Naukę PHP, podobnie jak innych języków rozpoczynamy od prostego, klasycznego skryptu, który spowoduje wyświetlenie na ekranie naszego komputera tekstu: „Hello World!”. W swoim ulubionym edytorze należy utworzyć nowy pusty plik PHP, nazwać go, np: index.php i wprowadzić do niego następujący kod:

Następnie w zależności od wybranego wcześniej rozwiązania, należy np: uruchomić serwer lokalny, bądź też serwer dołączony wraz z PHP, a następnie w przeglądarce wyświetlić resultat działania naszego skryptu. Na początku zabawy można również skorzystać z prostych narzędzi takich jak: ideone.com czy phpio.net – tak naprawdę istotne jest to by nie zniechęcić się do pisania kodu już na etapie konfigurowania środowiska.

Podstawy składni

Nie zamierzam tutaj kopiować ani interpretować dokumentacji, a jedynie wskazać właściwy kierunek: PHP: The Right Way – pierwsze kroki. Znajdziecie tam wszystkie niezbędne informacje: od formatowania kodu, przez instrukcje sterujące, po programowanie obiektowe i zarządzanie zależnościami w kodzie. Przedstawione tam materiały absolutnie nie wyczerpują tematu, a opisują krótko istotę problemu i wskazują artykuły / dokumentację, gdzie znależć możemy bardziej szczegółowe informacje.

Chciałbym zaznaczyć, że cały czas warto jest znać zarówno PHP w wersji 5.X jak i 7.X. Pracodawcy w swoich ofertach coraz częściej wymagają znajomości najnowsej wersji PHP ale w dalszym ciągu większość projektów przy których przyjedzie wam pracować opiera się o PHP 5.X.

Co dalej?

Nie ukrywam, że przygotowanie samego wprowadzenia zajęło mi dłuższą chwilę dlatego w tym momencie zastanawiam się nad najbardziej optymalną i wygodną formą przygotowania kolejnych części tutoriali. Jednym z głównym powodów dla krótych porzuciłem idee darmowych warsztatów w ramach „Women in Technology” było bardzo wąskie grono odbiorców w stosunku do czasu jaki musiałem poświęcić na takie zajęcia. Dodatko warsztaty nie były w żaden sposób nagrywane przez co dodatkowo traciły na wartości – brak możliwości powrotu do omawianego przykładu / zagadnienia, brak możliwości obejrzenia warsztatów sytuacji gdy ktoś nie mógł w nich uczestniczych itp. Powodów jest wiele. Jako dużo bardziej przemyślaną alternatywę, szanując swój czas, mogę zaproponować formułę krótkich filmów na YouTube w których mógłbym omawiać / pokazywać / opisywać konkretne zagadnienia dotyczące podstaw (i nit tylko) tworzenia prostych aplikacji w PHP. Sama formuła udostępnianych materiałów jest do doprecyzowania ale nieukrywam, że liczę na waszą pomoc w kwestii zakresu poruszonego materiału – jeśli oczywiście pomysł znajdzie grupę docelową.

Kiedyś już próbowałem swoich sił w podobnym temacie w ramach „Akademii Kodu” – jedne z pierwszych VIDEO możecie zobaczyć w kilku częsiowym tutorialu z PHP i Smyfony2:

Kolejne części serii dostępne są na kanale Akademii Kodu lub po kliknięciu w video.

Jak narazie to tylko luźny pomysł ale w swoich założeniach podoba mi się dużo bardziej niż formuła spotkań 5-6 godzinnych w soboty w zamkniętej grupie.