- Wstęp
- Podstawowa składnia
- Typy zmiennych
- Zmienne
- Stałe
- Wyrażenia
- Operatory
- Instrukcje warunkowe
- Tablice
- Funkcje
PHP (skrót od PHP: Hypertext Preprocessor) jest szeroko stosowanym językiem skryptowym ogólnego przeznaczenia o otwartym kodzie źródłowym, który szczególnie nadaje się do tworzenia stron internetowych i może być osadzony w HTML.
Przykład: Przykład wprowadzający
<!DOCTYPE html>
<html>
<head>
<title>Przykładowa strona</title>
</head>
<body>
<?php
echo "To moja pierwsza strona w języku PHP!";
?>
</body>
</html>
Powyższy kod, wstawia do znacznika <body>
napis "To mój pierwszy skrypt". Najważniejsze zasady, wynikające z niego to:
- Aby skrypt się wykonał musi być on umieszczony pomiędzy znacznikami
<?php
, który wskazuje kompilatorowi gdzie skrypt się zaczyna i znacznik?>
wskazujący na zakończenie skryptu. - Każda linijka kończy się znakiem średnika (wyjątkiem są funkcje i pętle, o których będzie później)
- Polecenie
echo
służy do wyświetlania tekstu.
Aby rozpocząć pracę z programowaniem w języku PHP należy posiadać na swoim komputerze jedną z instancji:
- LAMP (Linux, Apache, MySQL, PHP)
- MAMP (Mac, Apache, MySQL, PHP)
- WAMP (Windows, Apache, MySQL, PHP)
- XAMPP (Apache, MariaDB, PHP, Perl)
Aby utworzyć stronę, którą będzie obsługiwał interpreter PHP należy dodać rozszerzenie .php do wybranego pliku.
Ważne! Plik .php obsługuje znaczniki HTML, co oznacza, że w tych plikach można zarówno tworzyć skrypty, jak i budować siatkę strony.
Kiedy PHP parsuje plik, szuka tagów otwierających i zamykających skrypt PHP, które wyglądają następująco: znacznik otwierający <?php
, znacznik zamykający ?>
.
<?php echo "Standardowy tag PHP"; ?>
<?= "Skrócony tag PHP, za pomocą którego można wyświetlać tekst na stronie"; ?>
Jeżeli plik zawiera skrypt w języku PHP, zaleca się nie domykanie skryptu na końcu pliku. Ochroni to przed potencjalnymi białymi znakami, które mogę znajdować się na końcu pliku za znacznikami zamykającymi, które mogą powodować niepożądane efekty, ponieważ PHP rozpocznie próbę wyświetlania treści, której nie ma.
<?php
echo "Mój pierwszy tekst napisany w PHP";
// ... dalszy kod
echo "Ostatnia linijka kodu";
// skrypt kończy działanie tutaj bez znacznika zamykającego
Wszystko poza parą otwierającego oraz zamykającego znacznika jest ignorowane przez parser PHP, który pozwala na zmiksowaną treść, co oznacza, że w plikach PHP mogą znajdować się elementy HTML np. do tworzenia szablonów.
<p>Ten znacznik jest zignorowany przez PHP i wyświetlany przez przeglądarkę.</p>
<?php echo 'Podczas kiedy ta linijka jest parsowana przez PHP.'; ?>
<p>I to również jest ignorowane przez PHP i wyświetlane przez przeglądarkę.</p>
// Przykład #1 Zaawansowane opuszczanie znaczników z wykorzystaniem wyrażeń
<?php if ($expression == true): ?>
// Treść wypisana tutaj pojawi się, jeżeli wyrażenie będzie prawdziwe.
<?php else: ?>
// W innym przypadku pojawi się treść stąd.
<?php endif; ?>
Tak samo jak w językach C, czy Perl (w którym napisany jest język PHP), PHP również wymaga, aby na końcu każdej linijki instrukcji znajdował się średnik. Znacznik zamykający skrypt PHP automatycznie kończy też linijkę niewidzialnym średnikiem, co oznacza, że nie musimy wstawiać średnika, jeżeli polecenie jest jednolinijkowe.
<?php echo "Ala ma kota"; ?>
Brak nowej linii
<?= "Tutaj już jest nowa linia" ?>
PHP wspiera komentarze w takiej samej składni jak 'C' czy 'C++'. Na przykład:
<?php
echo 'To jest test'; // To jest jednolinijkowy komentarz
/* Tutaj mamy wieloliniowy komentarz,
dalszy ciąg komentarza znajduje się tutaj
i kolejna linijka */
echo 'Drugi test';
echo 'Trzeci test'; # Jedno liniowy komentarz
PHP wspiera 7 podstawowych typów zmiennych.
Podstawowe typy: boolean, integer, float i string.
Typy związkowes: array.
Specjalne typy: NULL.
Data Types | Description |
---|---|
boolean |
Wyrażenie boolean może przyjmować tylko wartość TRUE lub FALSE |
integer |
Liczba cakowita to numer ze zbioru liczb Naturalnych = {..., -2, -1, 0, 1, 2, ...}. |
float |
Liczby zmiennoprzecinkowe. |
string |
Ciąg znaków. |
array |
Tablica wiele wartości zapisanych w jednej zmiennej. Tablica w PHP zachowuje się jak uporządkowana mapa, w której do wartości przypisujemy klucze. |
NUll |
Specjalny typ NULL, którego wartość reprezentuje zmienną bez wartości. NULL może być jedynym typem tej zmiennej. |
Notatka: Aby sprawdzić typ i wartość zmiennej użyj funkcji
var_dump()
. Aby otrzymać czytelną reprezentację typu np. dla debugowania użyj funkcjigettype()
. Jeżeli chcesz sprawdzić typ danej funkcji, nie używajgettype()
, ale funkcjiis_type
. Przykłady:
<?php
$bool = TRUE; // boolean
$int = 12; // integer
$float = 4.1; // float
$string = "foo"; // string
$array = ["Apple", "Banana"]; // array
$null; // null
echo gettype($bool); // wyświetla: boolean
echo gettype($int); // wyświetla: interger
echo gettype($float); // wyświetla: double
echo gettype($string); // wyświetla: string
echo gettype($array); // wyświetla: array
echo gettype($null); // wyświetla: NULL
Zmienne w PHP reprezentowane są przy użyciu znaku $, po którym następuje nazwa zmiennej. Nazwy zmiennych są wrażliwe na wielkość liter.
WAŻNE: W PHP funkcjonuje konwencja nazewnicza camelCase. Oznacza to, że w przypadku zmiennych, które zawierają w sobie jeden wyraz nazwa jest pisana z małej litery np.
$age
, natomiast w przypadku wielowyrazowych zmiennych każda pierwsza litera drugiego i następnych wyrazów pisana jest dużym znakiem, czyli:$rowNumberFromDatabase
<?php
$var = 'Jakub';
$Var = 'Złotek';
echo "$var, $Var"; // wyświetli: "Jakub, Złotek"
$4site = 'Lorem Ipsum'; // BŁĄD! Zmienna zaczyna się od cyfry
$_4site = 'Dolor sit amet'; // POPRAWNIE! Zaczyna się od podkreślenia
$täyte = 'mansikka'; // POPRAWNIE! 'ä' jest rozszerzeniem ASCII 228.
?>
<?php
// Łączenie ciągów znaków przy pomocy cudzysłowiów.
$firstName = "Piotr";
$lastName = "Gawryl";
echo "$firstName $lastName"; // wyświetli: Piotr Gawryl
// Łączenie ciągów znaków przy pomocy kropki.
echo $firstName . " " . $lastName; // wyświetli: Piotr Gawryl
PHP zapewnia dużą ilość predefiniowanych zmiennych dla skryptów. Zmienne te reprezentują wszystko począwszy od zmiennych zewnętrznych, po wbudowane zmienne środowiskowe, ostatnie komunikaty o błędach, czy ostatnio pobrane nagłówki.
Zmienne superglobalne | Opis |
---|---|
$GLOBALS |
Odwołuje się do wszystkich zmiennych dostępnych globalnie |
$_SERVER |
Informacje o serwerze i środowisku, w którym skrypt jest wykonywany |
$_GET |
Dane przekazywane przez protokół HTTP GET |
$_POST |
Dane przekazywane przez protokół HTTP POST |
$_FILES |
Dane przekazywane przez protokuł HTTP podczas przesyłania plików na serwer |
$_REQUEST |
Zmienne żądania HTTP |
$_SESSION |
Zmienna sesyjna |
$_ENV |
Zmienna środowiskowa |
$_COOKIE |
Zmienna odpowiedzialna za obsługę ciasteczek w przeglądarce |
Zakres zmiennej to kontekst, w którym jest ona zdefiniowana. W większości przypadków wszystkie zmienne PHP mają tylko jeden zakres.
Zmienne lokalne: Zmienne zadeklarowane wewnątrz funkcji nazywane są zmiennymi lokalnymi do tej funkcji i mają swój zakres tylko w tej konkretnej funkcji.
<?php
function localVariable() {
$variable = "Jesten lokalną zmienną";
return $variable;
}
echo localVariable(); // wyświetli: Jestem lokalną zmienną
Zmienne globalne: Zmienne zadeklarowane poza funkcją nazywane są zmiennymi globalnymi.
<?php
global $globalVariable;
$globalVariable= "Jestem zmienną globalną!";
function globalVariable() {
global $globalVariable;
return $globalVariable;
}
echo globalVariable(); // wyświetli: Jestem zmienną globalną!
Zmienne statyczne: Cechą charakterystyczną PHP jest usuwanie zmiennej, po zakończeniu jej wykonywania i zwolnieniu pamięci. Czasami jednak potrzebujemy przechowywać zmienne nawet po zakończeniu wykonywania funkcji. Aby to zrobić używamy słowa kluczowego static i zmienne są wtedy nazywane statycznymi.
<?php
// Bez słowa static
function staticKeyword() {
$count = 1;
echo $count . "<br>";
$count = $count + 1;
}
staticKeyword(); // 1
staticKeyword(); // 1
staticKeyword(); // 1
staticKeyword(); // 1
staticKeyword(); // 1
// Ze słowem static
function staticKeyword() {
static $count = 1;
echo $count . "<br>";
$count = $count + 1;
}
staticKeyword(); // 1
staticKeyword(); // 2
staticKeyword(); // 3
staticKeyword(); // 4
staticKeyword(); // 5
Czasami wygodnie jest móc mieć zmienne nazwy zmiennych. To znaczy, nazwa zmiennej, która może być ustawiona i używana dynamicznie. Zwykłą zmienną ustawia się za pomocą instrukcji takiej jak:
<?php
$name = "Daniel Kamiński";
$fullName = "name";
echo $fullName . "<br>"; // wyświetli: name
echo $$fullName; // wyświetli: Daniel Kamiński
Stała jest identyfikatorem (nazwą) dla prostej wartości. Jak sama nazwa wskazuje, wartość ta nie może się zmienić podczas wykonywania skryptu. Stała domyślnie rozróżnia wielkość liter. Zgodnie z konwencją, identyfikatory stałych są zawsze pisane wielkimi literami.
<?php
// Poprawne nazwy zmiennych
define("FOO", "something");
define("FOO2", "something else");
define("FOO_BAR", "something more");
// Niepoprawna nazwa zmiennej
define("2FOO", "something");
// Ta nazwa, jest poprawna, ale należy jej unikać:
// PHP może pewnego dnia dostarczyć magiczną stałą.
// która nadpiszę taką stała, co poskutkuje zepsuciem skryptu
define("__FOO__", "something");
Istnieje 8 magicznych stałych, które zmieniają się w zależności od tego, gdzie są używane. Na przykład, wartość LINE zależy od linii, w której jest użyta w twoim skrypcie. Wszystkie te "magiczne" stałe są rozwiązywane w czasie kompilacji, w przeciwieństwie do zwykłych stałych, które są rozwiązywane w czasie wykonywania. Te specjalne stałe nie rozróżniają wielkości liter i są następujące:
Magic constants | Description |
---|---|
__LINE__ |
Bieżący numer linii pliku. |
__FILE__ |
Pełna ścieżka i nazwa pliku. Jeśli użyto go wewnątrz include, zwracana jest nazwa dołączonego pliku. |
__DIR__ |
Katalog pliku. Jeśli użyto wewnątrz include, to zwracany jest katalog dołączonego pliku. Jest to odpowiednik dirname(FILE). Nazwa tego katalogu nie posiada końcowego ukośnika, chyba że jest to katalog główny. |
__FUNCTION__ |
Nazwa funkcji. |
__CLASS__ |
Nazwa klasy. Nazwa klasy zawiera również przestrzeń nazw, w której została zadeklarowana np. DKaminski\TerrainGames. |
__METHOD__ |
Nazwa metody klasy. |
__NAMESPACE__ |
Nazwa bieżącej przestrzeni nazw. |
Wyrażenia. Najprostszy sposób na zdefiniowanie wyrażenia to "wszystko co ma wartość".
<?php
$a = 12;
$b = 47;
$total = $a + $b;
echo $total; // 59
Arytmetyczne | Przypisania | Porównania | Logiczne |
---|---|---|---|
Dodawania + |
Dodanie do zmiennej += |
Równe == |
I AND |
Odejmowania - |
Odjęcie od zmiennej -= |
Identyczne* === |
LUB OR |
Mnożenia * |
Pomnożenie przez zmienną *= |
Nie równe != |
Xor XOR |
Dzielenia / |
Podzielenie przez zmienną /= |
Większe lub równe >= |
NIE ! |
Modulo % |
Modulo assignment %= |
Nie identyczne !== |
ORAZ && |
Potęgowania ** |
Konkatenacja stringów .= |
Mniejsze niż < |
LUB II |
Negacji - |
Większe niż > |
||
Mniejsze lub równe <= |
|||
Większe lub równe >= |
Ważne: W operatorze logicznym używamy znaków ||, zostały one zamienione na II, aby nie zepsuć tabeli.
IF to najprostsza instrukcja warunkowa używana w języku PHP. Służy ona do sprawdzenia "CZY" dany warunek jest spełniony
<?php
$a = 5;
$b = 10;
if ($a > $b) {
echo "A jest większe niż B";
} elseif ($a < $b) {
echo "B jest większe niż A";
} else {
echo "Niepoprawne dane!";
}
// Wyjście: B jest większe niż A
W języku PHP istnieje możliwość używania instrukcji warunkowej w IF w jednej linii kodu. Wtedy jej struktura wygląda następująco:
warunek ? działanie jeśli prawda : działanie jeżeli fałsz
. Np.
<?php
$a = 5;
$b = 10;
echo $a > $b ? "A jest większe niż B": "B jest większe niż A";
// Wyjście: B jest większe niż A
Prostsze rozwiązanie, prawda?
<?php
$i = 2;
switch ($i) {
case 0:
echo "I jest równe 0";
break;
case 1:
echo "I jest równe 1";
break;
case 2:
echo "I jest równe 2";
break;
}
// Wyjście: I jest równe 2
PHP oferuje alternatywną formę składni dla instrukcji warunkowych, czy pętli. W każdym przypadku podstawowa forma się nie zmienia. Zamiast znaków {}
używamy :
oraz instrukcji kończącej czyli endif;
lub endwhile;
lub endfor;
lub endforeach;
lub endswitch;
. Jest to forma często używana podczas wyświetlania dużej ilości kodu HTML, ponieważ zwiększa przejrzystość kodu
<?php
$a = 5;
if ($a == 5):
echo "A jest równe 5";
elseif ($a == 6):
echo "A jest równe 6";
else:
echo "A nie równa się ani 5, ani 6";
endif;
// Wyjście: A jest równe 5
Składnia pętli for wygląda następująco:
for(deklaracja zmiennej ; wykonywanie pętli do momentu kiedy warunek się spełni ; zmiana wartości zmiennej po każdej iteracji) {}
. Np.
<?php
for ($a = 0; $a < 5; $a++) {
echo $a . "<br>";
}
/*
Wyjście:
0
1
2
3
4
*/
Składnia pętli while wygląda następująco:
while(warunek do kiedy ma działać pętla) {}
. Np.
<?php
$a = 0;
while($a < 5){
echo $a . "<br>";
$a++;
}
/*
Wyjście:
0
1
2
3
4
*/
Składnia pętli do while wygląda następująco:
do {} while(warunek do kiedy ma działać pętla)
. Np.
<?php
$a = 0;
do {
echo $a . "<br>";
$a++;
} while ($a < 5);
/*
Wyjście:
0
1
2
3
4
*/
Pętla foreach została stworzona w celu łatwiejszej iteracji po tabelach. Umożliwia ona szybsze przeglądanie danych zawartych w tabelach. Tak jak jest to opisane w poniżzym przykładzie
<?php
$array = [1,2,3,4,5];
foreach($array as $value){
echo $value;
}
// Wyjście: 12345
Polecenie break
służy do "opuszczenia" pętli. Zazwyczaj używa się go w przypadku kiedy chcemy przerwać pętlę w momencie kiedy jakiś warunek się spełni.
<?php
for ($i = 0; $i < 5; $i++) {
if ($i === 3) {
break;
}
echo $i . "<br>";
}
/*
Wyjście:
0
1
2
*/
Polecenie continue
działa podobnie do break
. Pomija ono iterację pętli nie przerywając jej wykonywania. Przykład poniżej
<?php
for ($i = 0; $i < 5; $i++) {
if ($i === 2) {
continue;
}
echo $i . "<br>";
}
/*
Wyjście:
0
1
3
4
*/
Include to instrukcja, dzięki której możemy importować skrypty w PHP do naszego pliku.
Struktura pliku index.php
<!DOCTYPE html>
<html>
<head>
<title>Strona Include</title>
</head>
<body>
<?php include "navbar.php"; ?>
<?php
echo "Tekst pod paskiem nawigacyjnym!";
?>
</body>
</html>
Struktura pliku navbar.php
<?php
<header>
<a href="strona1.php">Strona 1</a>
<a href="strona2.php">Strona 2</a>
<a href="strona3.php">Strona 3</a>
</header>
?>
Po otworzeniu strony w przeglądarce zostanie wyświetlona strona w postaci:
<!DOCTYPE html>
<html>
<head>
<title>Strona Include</title>
</head>
<body>
<header>
<a href="strona1.php">Strona 1</a>
<a href="strona2.php">Strona 2</a>
<a href="strona3.php">Strona 3</a>
</header>
Tekst pod paskiem nawigacyjnym!
</body>
</html>
Instrukcja require działa praktycznie tak samo jak instrukcja include. Jedyna różnica to zmiana nazwy instrukcji.
<!DOCTYPE html>
<html>
<head>
<title>Strona require</title>
</head>
<body>
<?php require "navbar.php"; ?>
<?php
echo "Strona używająca instrukcji require!";
?>
</body>
</html>
Tablica w języku PHP to w zasadzie uporządkowana mapa. Mapa jest typem, który przypisuje wartości do kluczy. Ten typ jest zoptymalizowany pod wiele różnych użyć:
- może być tablicą.
- listą (wektory),
- tablicą hashy,
- słownikiem,
- kolekcją
- kolejką,
- i wiele innych. Wartościami tablicy mogą być inne tablice. Dzięki temu rozwiązaniu możemy tworzyć wielowymiarowe tablice
$fruits = array("Jabłko", "Pomarańcz", "Banan", "Granat");
/*
Krótsza forma utworzenia tablicy
*/
$fruits = ["Jabłko", "Pomarańcz", "Banan"];
foreach ($fruits as $fruit) {
var_dump($fruit);
}
/*
Wynik:
string(6) "Jabłko" // typ string o długości 6 znaków
string(9) "Pomarańcz" // typ string o długości 9 znaków
string(5) "Banan" // typ string o długości 5 znaków
*/
Tablice asocjacyjne to takie, w których klucze mogą być ciągami znaków zamiast cyfr np. "owoc1" zamiast "1"
<?php
// Aby wypisać wszystkie wartości z tablicy asocjacyjnej, należy użyć pętli foreach w sposób podany poniżej:
$persons = [
"Piotr" => "51",
"Jakub" => "25",
"Bartosz"=> "13.5"
];
foreach ($persons as $name => $age) {
echo "Mam na imię $name, mam $age lat.";
echo "<br>";
}
/*
Wyjście:
Mam na imię Piotr, mam 51 lat.
Mam na imię Jakub, mam 25 lat.
Mam na imię Bartosz, mam 13.5 lat.
*/
Funkcja to wydzielona część programu, która przetwarza argumenty i ewentualnie zwraca wartość, która następnie może być wykorzystana, jako argument w innych działaniach lub funkcjach. Funkcja może posiadać własne zmienne lokalne.
W funkcjach możemy zdefiniować wartości domyślne w przypadku, kiedy nie zostaną podane wszystkie parametry funkcji
<?php
function add($a = 0, $b = 0) {
return $a + $b;
}
echo add(10,5); // Wyjście: 15
echo add(); // Wyjście: 0
Nazwa | Opis |
---|---|
empty |
Sprawdza, czy zmienna jest pusta. |
isset |
Sprawdza czy zmienna jest zadeklarowana oraz czy jest różna od NULL |
print_r |
Wyświetla czytelne informacje o zmiennej |
unset |
Usuwa zmienną z pamięci |
var_dump |
Wyświetla techniczne informacje o zmiennej |
<?php
$progLan = "PHP";
$number = 1.25;
$boolean = true;
$arr = [1,2,3,4,5];
$anInteger = 10;
// Sprawdza czy zmienna jest zadeklarowana z jakąś wartością.
var_dump(empty($progLan)) . "<br>"; // bool(false) - zmienna $progLan nie jest pusta
var_dump(isset($progLan)) . "<br>"; // bool(true) - zmienna $progLan jest zadeklarowana
// Wyświetlanie wartości zmiennych
print_r($number); // 1.25
var_dump(10); // int(10)
Nazwa | Opis |
---|---|
echo() |
Wyświetla ciąg znaków |
print() |
Wyświetla ciąg znaków |
str_replace() |
Zamienia wszystkie wartości w podanym ciągu znaków |
strtolower() |
Zamienia ciąg znaków na małe znaki |
strtoupper() |
Zamienia ciąg znaków na duże znaki |
substr() |
Zwraca część ciągu znaków |
<?php
$progLan = "PHP";
$arr = [1,2,3,4,5];
$longText = "Lubię programować w PHP!";
$vowels = ["p", "r", "o", "g", "r", "a", "m"];
print ("Witaj świecie!") . "<br>"; // Hello, World!
// Wyszukwianie pierwszego przypadku
print(substr($longText, 2, 4)); // programować
// Zwraca podmieniony ciąg znaków
print(str_replace($vowels, "", $longText)); // Lubię wć w PHP!!
print(strtolower($longText)); // lubię programować w php!
print(strtoupper($longText)); // LUBIĘ PROGRAMOWAĆ W PHP!