Szukaj…


Uwagi

wprowadź opis zdjęcia tutaj

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>
PHP 5.x 5.4

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 ma void return, podczas gdy print zwraca int o wartości 1
  • echo może przyjmować wiele argumentów (bez nawiasów), podczas gdy print 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 printdostę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:

  1. Standardowe wejście. Uruchom komendę php bez żadnych argumentów, ale wstaw do niej kod PHP:
    echo '<?php echo "Hello world!";' | php
  2. Nazwa pliku jako argument. Uruchom komendę php z nazwą pliku źródłowego PHP jako pierwszym argumentem:
    php hello_world.php
  3. Kod jako argument. Użyj opcji -r w komendzie php , 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!";'
  4. Interaktywna powłoka. Użyj opcji -a w poleceniu php 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

  1. Utwórz plik index.php zawierający:
<?php
echo "Hello World from built-in PHP server";
  1. Uruchom polecenie php -S localhost:8080 z wiersza poleceń. Nie dołączaj http:// . 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.

  2. 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";
?>
PHP 5.x 5.4

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
PHP 5.x 5.6

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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow