PHP Samouczek
Rozpoczęcie pracy z PHP
Szukaj…
Uwagi
PHP (akronim rekurencyjny dla PHP: Hypertext Preprocessor) jest powszechnie używanym językiem programowania typu open source. Szczególnie nadaje się do tworzenia stron internetowych. Unikalną cechą PHP jest to, że obsługuje zarówno początkujących, jak i doświadczonych programistów. Ma niską barierę wejścia, więc łatwo jest zacząć, a jednocześnie zapewnia zaawansowane funkcje oferowane w innych językach programowania.
Otwarte źródło
To projekt typu open source. Zaangażuj się .
Specyfikacja języka
PHP ma specyfikację językową .
Obsługiwane wersje
Obecnie dostępne są trzy obsługiwane wersje : 5.6, 7.0 i 7.1.
Każda gałąź wydania PHP jest w pełni obsługiwana przez dwa lata od pierwszej stabilnej wersji. Po tym dwuletnim okresie aktywnego wsparcia każdy oddział jest obsługiwany przez dodatkowy rok tylko w przypadku krytycznych problemów związanych z bezpieczeństwem. Wydania w tym okresie są dokonywane według potrzeb: może być wiele wydań punktowych lub ich brak, w zależności od liczby raportów.
Nieobsługiwane wersje
Po zakończeniu trzech lat wsparcia oddział kończy swój okres użytkowania i nie jest już obsługiwany.
Dostępna jest tabela gałęzi końca życia .
Lista problemow
Błędy i inne problemy są śledzone na https://bugs.php.net/ .
Listy mailingowe
Dyskusje na temat rozwoju i wykorzystania PHP odbywają się na listach dyskusyjnych PHP .
Oficjalna dokumentacja
Pomóż w utrzymaniu lub tłumaczeniu oficjalnej dokumentacji PHP .
Możesz użyć edytora na edit.php.net . Sprawdź nasz przewodnik dla współpracowników .
Wersje
PHP 7.x
Wersja | Obsługiwane do | Data wydania |
---|---|---|
7.1 | 01.12.2019 | 01.12.2016 |
7.0 | 2018-12-03 | 2015-12-03 |
PHP 5.x
Wersja | Obsługiwane do | Data wydania |
---|---|---|
5.6 | 31.12.2018 | 28.08.2014 |
5.5 | 2016-07-21 | 2013-06-20 |
5.4 | 2015-09-03 | 01.03.2012 |
5.3 | 14.08.2014 | 30.06.2009 |
5.2 | 2011-01-06 | 02.11.2006 |
5.1 | 2006-08-24 | 2005-11-24 |
5.0 | 2005-09-05 | 2004-07-13 |
PHP 4.x
Wersja | Obsługiwane do | Data wydania |
---|---|---|
4.4 | 2008-08-07 | 2005-07-11 |
4.3 | 2005-03-31 | 2002-12-27 |
4.2 | 2002-09-06 | 2002-04-22 |
4.1 | 2002-03-12 | 2001-12-10 |
4.0 | 2001-06-23 | 2000-05-22 |
Starsze wersje
Wersja | Obsługiwane do | Data wydania |
---|---|---|
3.0 | 2000-10-20 | 1998-06-06 |
2.0 | 01.11.1997 | |
1.0 | 1995-06-08 |
Dane wyjściowe HTML z serwera WWW
PHP może służyć do dodawania treści do plików HTML. Podczas gdy HTML jest przetwarzany bezpośrednio przez przeglądarkę internetową, skrypty PHP są wykonywane przez serwer WWW, a wynikowy HTML jest wysyłany do przeglądarki.
Poniższy znacznik HTML zawiera instrukcję PHP, która doda Hello World!
do wyniku:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p><?php echo "Hello world!"; ?></p>
</body>
</html>
Gdy zostanie to zapisane jako skrypt PHP i wykonane przez serwer WWW, do przeglądarki użytkownika zostanie wysłany następujący kod HTML:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
echo
ma również składnię skrótów, która pozwala natychmiast wydrukować wartość. Przed wersją PHP 5.4.0 ta krótka składnia działa tylko przy włączonym ustawieniu konfiguracji short_open_tag .
Na przykład rozważ następujący kod:
<p><?= "Hello world!" ?></p>
Jego wynik jest identyczny z następującymi:
<p><?php echo "Hello world!"; ?></p>
W rzeczywistych aplikacjach wszystkie dane wysyłane przez PHP na stronę HTML powinny być odpowiednio zabezpieczone znakami ucieczki, aby uniknąć ataków XSS ( skryptów między witrynami ) lub uszkodzenia tekstu.
Zobacz także: Ciągi i PSR-1 , które opisują najlepsze praktyki, w tym właściwe użycie krótkich tagów ( <?= ... ?>
).
Dane wyjściowe inne niż HTML z serwera WWW
W niektórych przypadkach podczas pracy z serwerem WWW może być wymagane zastąpienie domyślnego typu zawartości serwera WWW. Mogą wystąpić przypadki, w których konieczne jest przesłanie danych w postaci plain text
, JSON
lub XML
.
Funkcja header()
może wysyłać surowy nagłówek HTTP. Możesz dodać nagłówek Content-Type
aby powiadomić przeglądarkę o treści, którą wysyłamy.
Rozważ następujący kod, w którym ustawiamy Content-Type
jako text/plain
:
header("Content-Type: text/plain");
echo "Hello World";
Spowoduje to utworzenie dokumentu tekstowego o następującej treści:
Witaj świecie
Aby utworzyć zawartość JSON , użyj zamiast tego typu treści application/json
:
header("Content-Type: application/json");
// Create a PHP data array.
$data = ["response" => "Hello World"];
// json_encode will convert it to a valid JSON string.
echo json_encode($data);
Spowoduje to utworzenie dokumentu typu application/json
o następującej treści:
{„response”: „Hello World”}
Zauważ, że funkcja header()
musi zostać wywołana, zanim PHP wygeneruje jakiekolwiek dane wyjściowe, w przeciwnym razie serwer WWW będzie już wysyłał nagłówki odpowiedzi. Rozważ więc następujący kod:
// Error: We cannot send any output before the headers
echo "Hello";
// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";
Spowoduje to wyświetlenie ostrzeżenia:
Ostrzeżenie: nie można modyfikować informacji nagłówka - nagłówki już wysłane przez (wyjście rozpoczęto w /dir/example.php:2) w /dir/example.php w linii 3
Gdy używasz header()
, jego wyjściem musi być pierwszy bajt wysłany z serwera. Z tego powodu ważne jest, aby nie mieć pustych linii lub spacji na początku pliku przed znacznikiem otwierającym PHP <?php
. Z tego samego powodu za najlepszą praktykę (patrz PSR-2 ) należy pominąć tag zamykający PHP ?>
Z plików zawierających tylko PHP i z bloków kodu PHP na samym końcu pliku.
Przejrzyj sekcję buforowania danych wyjściowych, aby dowiedzieć się, jak „złapać” zawartość w zmienną, aby mogła później wyświetlić dane wyjściowe, na przykład po wypisaniu nagłówków.
Witaj świecie!
Najczęściej używaną konstrukcją języka do drukowania danych wyjściowych w PHP jest echo
:
echo "Hello, World!\n";
Alternatywnie możesz także użyć print
:
print "Hello, World!\n";
Obie instrukcje pełnią tę samą funkcję, z niewielkimi różnicami:
-
echo
mavoid
return, podczas gdyprint
zwracaint
o wartości1
-
echo
może przyjmować wiele argumentów (bez nawiasów), podczas gdyprint
przyjmuje tylko jeden argument -
echo
jest nieco szybsze niżprint
Zarówno echo
jak i print
są konstrukcjami językowymi, a nie funkcjami. Oznacza to, że nie wymagają nawiasów wokół argumentów. Aby uzyskać kosmetyczną spójność z funkcjami, można dołączyć nawiasy. Obszerne przykłady użycia echo
i print
są dostępne gdzie indziej .
Dostępne są również printf
stylu C i powiązane funkcje, jak w poniższym przykładzie:
printf("%s\n", "Hello, World!");
Zobacz Wyprowadzanie wartości zmiennej, aby uzyskać kompleksowe wprowadzenie zmiennych wyjściowych w PHP.
Rozdzielenie instrukcji
Podobnie jak większość innych języków w stylu C, każda instrukcja jest zakończona średnikiem. Ponadto znacznik zamykający służy do zakończenia ostatniego wiersza kodu bloku PHP.
Jeśli ostatni wiersz kodu PHP kończy się średnikiem, znacznik zamykający jest opcjonalny, jeśli po tym ostatnim wierszu nie ma kodu. Na przykład możemy pominąć znacznik zamykający po echo "No error";
w następującym przykładzie:
<?php echo "No error"; // no closing tag is needed as long as there is no code below
Jeśli jednak blok kodu PHP zawiera inny kod, tag zamykający nie jest już opcjonalny:
<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
<body>
</body>
</html>
Możemy również pominąć średnik ostatniej instrukcji w bloku kodu PHP, jeśli ten blok kodu ma znacznik zamykający:
<?php echo "I hope this helps! :D";
echo "No error" ?>
Ogólnie zaleca się, aby zawsze używać średnika i tagu zamykającego dla każdego bloku kodu PHP z wyjątkiem ostatniego bloku kodu PHP, jeśli nie ma już kodu po tym bloku kodu PHP.
Twój kod powinien więc wyglądać następująco:
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon but leave out the closing tag";
PHP CLI
PHP można również uruchomić bezpośrednio z wiersza poleceń za pomocą interfejsu wiersza polecenia.
Interfejs CLI jest w zasadzie taki sam jak PHP z serwerów WWW, z wyjątkiem pewnych różnic w zakresie standardowego wejścia i wyjścia.
Wyzwalanie
Interfejs CLI PHP umożliwia cztery sposoby uruchamiania kodu PHP:
- Standardowe wejście. Uruchom komendę
php
bez żadnych argumentów, ale wstaw do niej kod PHP:echo '<?php echo "Hello world!";' | php
- Nazwa pliku jako argument. Uruchom komendę
php
z nazwą pliku źródłowego PHP jako pierwszym argumentem:php hello_world.php
- Kod jako argument. Użyj opcji
-r
w komendziephp
, a następnie kodu do uruchomienia. Otwarte tagi<?php
nie są wymagane, ponieważ wszystko w argumencie jest traktowane jako kod PHP:php -r 'echo "Hello world!";'
- Interaktywna powłoka. Użyj opcji
-a
w poleceniuphp
aby uruchomić interaktywną powłokę. Następnie wpisz (lub wklej) kod PHP i naciśnij klawisz Return :$ php -a Interactive mode enabled php > echo "Hello world!"; Hello world!
Wynik
Wszystkie funkcje lub elementy sterujące, które generują dane wyjściowe HTML na serwerze WWW PHP mogą być używane do generowania danych wyjściowych w strumieniu standardowym (deskryptor pliku 1), a wszystkie działania, które generują dane wyjściowe w dziennikach błędów na serwerze WWW PHP generują dane wyjściowe w strumieniu standardowym (plik deskryptor 2).
Example.php
<?php
echo "Stdout 1\n";
trigger_error("Stderr 2\n");
print_r("Stdout 3\n");
fwrite(STDERR, "Stderr 4\n");
throw new RuntimeException("Stderr 5\n");
?>
Stdout 6
Wiersz poleceń powłoki $ php Example.php 2>stderr.log >stdout.log;\
> echo STDOUT; cat stdout.log; echo;\
> echo STDERR; cat stderr.log\
STDOUT
Stdout 1
Stdout 3
STDERR
Stderr 4
PHP Notice: Stderr 2
in /Example.php on line 3
PHP Fatal error: Uncaught RuntimeException: Stderr 5
in /Example.php:6
Stack trace:
#0 {main}
thrown in /Example.php on line 6
Wejście
Zobacz: Interfejs wiersza poleceń (CLI)
Wbudowany serwer PHP
PHP 5.4+ ma wbudowany serwer programistyczny. Można go używać do uruchamiania aplikacji bez konieczności instalowania produkcyjnego serwera HTTP, takiego jak nginx lub Apache. Wbudowany serwer jest przeznaczony wyłącznie do celów programistycznych i testowych.
Można go uruchomić za pomocą flagi -S
:
php -S <host/ip>:<port>
Przykładowe użycie
- Utwórz plik
index.php
zawierający:
<?php
echo "Hello World from built-in PHP server";
Uruchom polecenie
php -S localhost:8080
z wiersza poleceń. Nie dołączajhttp://
. Spowoduje to uruchomienie serwera WWW nasłuchującego na porcie 8080 przy użyciu bieżącego katalogu, w którym znajduje się katalog główny dokumentu.Otwórz przeglądarkę i przejdź do
http://localhost:8080
. Powinieneś zobaczyć swoją stronę „Hello World”.
Konfiguracja
Aby zastąpić domyślny katalog główny dokumentu (tj. Bieżący katalog), użyj flagi -t
:
php -S <host/ip>:<port> -t <directory>
Np. Jeśli masz katalog public/
w swoim projekcie, możesz obsłużyć swój projekt z tego katalogu, używając php -S localhost:8080 -t public/
.
Kłody
Za każdym razem, gdy żądanie jest wysyłane z serwera programistycznego, wiersz dziennika taki jak ten poniżej jest zapisywany w linii poleceń.
[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
Tagi PHP
Istnieją trzy rodzaje znaczników oznaczających bloki PHP w pliku. Parser PHP szuka tagów otwierających i (jeśli są) zamykających, aby oddzielić kod do interpretacji.
Tagi standardowe
Te znaczniki są standardową metodą osadzania kodu PHP w pliku.
<?php
echo "Hello World";
?>
Tagi echa
Te tagi są dostępne we wszystkich wersjach PHP, a ponieważ PHP 5.4 są zawsze włączone. W poprzednich wersjach znaczniki echa mogły być włączane tylko w połączeniu z krótkimi znacznikami.
<?= "Hello World" ?>
Krótkie tagi
Możesz wyłączyć lub włączyć te tagi za pomocą opcji short_open_tag
.
<?
echo "Hello World";
?>
Krótkie tagi:
- są niedozwolone we wszystkich głównych standardach kodowania PHP
- są zniechęcani w oficjalnej dokumentacji
- są domyślnie wyłączone w większości dystrybucji
- zakłócać wbudowane instrukcje XML
- nie są akceptowane w przesyłaniu kodu przez większość projektów typu open source
Tagi ASP
Po włączeniu opcji asp_tags
można używać znaczników w stylu ASP.
<%
echo "Hello World";
%>
Są to historyczne dziwactwa i nigdy nie należy ich używać. Zostały one usunięte w PHP 7.0.