12-345-678

E-mail

Suport

PHP

Super User
Odsłony: 369

To interpretowany skryptowy język programowania zaprojektowany do generowania stron internetowych i budowania aplikacji webowych w czasie rzeczywistym.

PHP jest najczęściej stosowany do tworzenia skryptów po stronie serwera WWW, ale może być on również używany do przetwarzania danych z poziomu wiersza poleceń, a nawet do pisania programów pracujących w trybie graficznym (np. za pomocą biblioteki GTK+, używając rozszerzenia PHP-GTK). Implementacja PHP wraz z serwerem WWW Apache oraz serwerem baz danych MySQL określana jest jako platforma AMP (w środowisku Linux – LAMP, w Windows – WAMP).

Możliwości

Skrypty napisane w PHP są z reguły umieszczane w plikach tekstowych (czasami razem z kodem HTML lub XHTML). Dzięki temu PHP jest podobny w założeniach do coraz rzadziej stosowanego mechanizmu Server Side Includes[5]. PHP pozwala także na wykonywanie skryptów z linii poleceń podobnie jak Perl, Python oraz Ruby. Jego modułowa budowa daje również możliwość programowania samodzielnych aplikacji z interfejsem graficznym. PHP umożliwia współpracę z wieloma rodzajami źródeł danych, takich jak systemy zarządzania bazami danych, pliki tekstowe, dokumenty XML oraz serwisy WWW.

Przykład użycia PHP na stronie

<html>

<head>

</head>

<body>

     <?php echo '<p>Hello World</p>' ; ?>

</body>
</html>

Moduły

Cała funkcjonalność PHP zawarta jest w czterech zbiorach modułów różniących się od siebie dostępnością dla programisty.

  • Moduły jądra
    • Część silnika PHP; zawsze aktywne.
  • Moduły oficjalne
    • Element każdej dystrybucji PHP; aktywowane ręcznie przez administratora serwera.
  • Repozytorium PECL
    • Darmowe moduły o otwartym źródle tworzone przez programistów z całego świata, przeznaczone do samodzielnej kompilacji. Począwszy od wydania PHP 5 do PECL przeniesionych zostało wiele wcześniejszych modułów oficjalnych, najczęściej tych niestabilnych lub rzadko używanych.
  • Repozytorium PEAR
    • Zbiór realizujący typowe zadania klas o ujednoliconej budowie.

Zdecydowana większość modułów ma budowę proceduralną. Dopiero w PHP 5 rozpoczęto tworzenie w pełni obiektowych rozszerzeń oraz obiektowych zamienników starych funkcji.

 

Składnia języka PHP

Składnia PHP jest zapożyczona ze składni języków C, Java oraz Perl.

 

<?php

$a = 5;

$b = 3;

 

function suma($zmienna1, $zmienna2)

{

    $wynik = $zmienna1 + $zmienna2;

    return $wynik; //Dodajemy argumenty i zwracamy wynik

}

 

echo suma($a, $b); // 8

?>

Cały kod PHP musi zawierać się pomiędzy znacznikami:

 

<?php oraz ?> – jedyny nieskrótowy tag zalecany przez PSR-1[24], wymienione jako dozwolone w podręczniku php.net[25]; PSR-2 nakazuje ominięcie znacznika końcowego, jeśli plik zawiera tylko kod PHP, a na końcu pliku musi zostać jedna, pusta linia[26], z kolei php.net jedynie zaleca ominięcie końcowego tagu, w takim przypadku[25]

<? oraz ?> – niezalecane przez php.net z powodu mniejszej kompatybilności (wymaga włączenia short_open_tag)[25]; użycie zabronione przez PSR-1[24], mimo warunkowego zezwolenia przez podręcznik php.net[25]

<?= oraz ?> – powoduje wysłanie tekstu na wyjście (np. <?=$zmienna ?> i ma taki sam wynik (tj. skrócona notacja) jak <?php echo $zmienna; ?>); jedyny skrótowy tag zalecany przez PSR-1[24] – nie mylić z dopuszczeniem <? oraz ?>; nie wymaga włączenia short_open_tag w wersjach PHP 5.4 i późniejszych[27]

<% oraz %> – tagi w stylu ASP; wymaga włączenia asp_tags[28] (usunięto w PHP 7)

<%= oraz %> – analogiczny efekt do <?= oraz ?>[28] (usunięto w PHP 7)

<script language="php"> oraz </script> – case insensitive, wprowadzone dla kompatybilności z niektórymi edytorami HTML[27] (usunięto w PHP 7)

Przykładowe zastosowanie

Niektóre aplikacje napisane w PHP korzystają z formularzy. Przykładowa aplikacja przypominająca prosty kalkulator została zamieszczona poniżej:

 

<?php

if (isset($_POST['licz'])) {

$liczba_a=floatval($_POST['a']); // Konwersja na liczbę zmiennoprzecinkową

$liczba_b=floatval($_POST['b']);

echo "Chcesz obliczyć sumę następujących liczb:" . "<br />" . "<b>";

print_r($liczba_a);

echo "</b>" . "<br />" . "Oraz:" . "<br />" . "<b>";

print_r($liczba_b);

echo "</b>" . "<hr />";

echo "Ich suma to:" . " <b>";

$wynik = $liczba_a + $liczba_b;

echo $wynik;

echo "</b>";

} else {

echo "Wpisz liczby.";

}

?>

<!-- Poniżej znajduje się sam formularz -->

<form action="<?php echo ($_SERVER['SCRIPT_NAME']); ?>" method="POST">

Podaj dwie liczby:<br />

Liczba A: <input name="a" /><br />

Liczba B: <input name="b" /><br />

<input type="submit" name="licz" value="Oblicz!" />

</form>

Ze względów bezpieczeństwa powinno się stosować $_SERVER['SCRIPT_NAME'] zamiast $_SERVER['PHP_SELF'] (użycie tego drugiego może grozić atakami XSS).

 

Klasy i obiekty

Klasy deklarujemy następująco (od PHP5):

 

<?php

class MojaKlasa

{

 

  public $zm_publiczna; //definiowanie zmiennej publicznej

  private $zm_prywatna; //definiowanie zmiennej prywatnej

  protected $zm_chroniona; //definiowanie zmiennej chronionej

  const STALA = 124; //definiowanie stałej, stała musi zostać określona (jeśli nie - błąd składni)

 

 

  public function __construct()

  {

    echo 'Jestem konstruktorem klasy MojaKlasa. Za każdym razem gdy powołasz mój obiekt do życia, wykonam operacje zawarte w tej metodzie.<br />';

  }

 

  public function zrob_cos()

  {

    echo 'Właśnie wykonywana jest funkcja zrob_cos()<br />';

  }

 

  public function __destruct()

  {

    echo 'Jestem destruktorem klasy MojaKlasa. Za każdym razem gdy usuniesz mój obiekt, wykonam operacje zawarte w tej metodzie.<br />';

  }

}

$mojobiekt = new MojaKlasa(); //powoła do życia obiekt i wykona operacje zawarte w funkcji __construct()

$mojobiekt -> zrob_cos(); // Wydrukuje komunikat

//kiedy kończy się kod PHP, wszystkie zmienne są usuwane; wywoływana jest funkcja __destruct()

?>

Komentarze

Rozróżniamy trzy typy komentarzy: Pierwszym z nich jest wieloliniowy:

 

<?php

/* To jest komentarz

   wieloliniowy, zamykany znacznikiem:

*/

?>

Kolejnym jest jednoliniowy:

 

<?php

//to jest komentarz jednoliniowy, który nie potrzebuje zamknięcia

?>

Ostatnim jest jednoliniowy (w innej wersji):

 

<?php

# to jest komentarz jednoliniowy, który nie potrzebuje zamknięcia

?>

 

<?php function foo(&$value) { $value = 'bar'; } ?>

Klasy i obiekty

Elementy programowania obiektowego pojawiły się w PHP 3. W PHP 4 udostępniono statyczne wywoływanie metod. W PHP 5 możliwości zostały rozszerzone między innymi o statyczne zmienne klasy, obsługę interfejsów, kontrolę dostępu, kontrolę typów czy klasy i metody abstrakcyjne. Model PHP wzoruje się na językach C++ i Java. Od wersji 5 PHP posiada mechanizmy refleksyjne[29], które pozwalają na analizę klas, funkcji oraz rozszerzeń. Bez zainstalowania odpowiedniego rozszerzenia nie umożliwiają one jednak zmiany tych struktur w czasie wykonywania, przykład klasy:

 

<?php

class Przyklad

{

public function powiedzCzesc($imie)

{

return 'Cześć, ' . $imie;

}

}

 

$objPrzyklad = new Przyklad ();

echo $objPrzyklad->powiedzCzesc ( 'Adam' );

?>

Funkcje i struktury kontrolne

PHP jest wyposażone w szeroki wachlarz domyślnych funkcji. Niekonsekwencja w ich nazewnictwie (np. naprzemienne stosowanie CamelCase i znaku podkreślenia) jest niekiedy przedmiotem krytyki PHP. Znaczna część funkcji pochodzi jednak od ich odpowiedników w języku C i różnice pomiędzy nazwami funkcji wywodzą się właśnie z różnic w nazewnictwie z odpowiednich bibliotek C.

 

PHP obsługuje rekurencję do poziomu około stu zagłębień. Jeśli stos parsera zostanie przeciążony nadmierną ilością wywołań lub iteracji, wywołanie aplikacji zostanie przerwane.

 

Obsługa błędów

Wersja 5 wprowadziła mechanizm wyjątków. Tylko część modułów powiadamia jednak użytkownika o wystąpieniu błędów za ich pośrednictwem; większość umieszcza je na wyjściu programu w miejscu ich wystąpienia. Przykład:

 

<?php

class Foo

{

private $zmienna;

public function setZmienna($cos)

{

$this->zmienna = $cos;

}

public function getZmienna()

{

if (empty ( $this->zmienna ))

{

throw new Exception ( 'Proszę ustawić zmienną' );

}

return $this->zmienna;

}

}

 

try

{

$objFoo = new Foo ();

print $objFoo->getZmienna ();

} catch ( Exception $e )

{

die ( 'Wystąpił błąd: ' . $e->getMessage () );

}

?>

Obsługa baz danych

PHP obsługuje większość znanych baz danych: MySQL, PostgreSQL, Oracle, MS SQL, DB2. Poniżej przedstawiono wykonanie zapytania SQL na bazie danych MySQL przy pomocy biblioteki PDO dla PHP5:

 

<?php

try

{

$pdo = new PDO ( 'mysql:host=localhost;dbname=articles', 'root', 'root' );

$pdo->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

 

$stmt = $pdo->query ( 'SELECT id, name, content FROM articles ORDER BY id' );

echo '<ul>';

foreach ( $stmt as $row )

{

echo '<h1>' . $row ['name'] . '</h1>';

echo $row ['content'] . '<hr />';

}

$stmt->closeCursor ();

echo '</ul>';

} catch ( PDOException $e )

{

echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage ();

}

?>

Popularność

W roku 1997 język PHP/FI obsługiwało około 50 tysięcy domen internetowych. Do roku 2005 udział PHP rósł. Później uległ stabilizacji na poziomie ok. 20 milionów domen[6][30] (9% wszystkich)[31]. Obecnie jest dominującym językiem programowania i obejmuje około 75% domen internetowych[32].

 

Aplikacje

 

W PHP powstała znaczna część obecnie istniejących aplikacji sieciowych. Należą do nich systemy zarządzania treścią, systemy forów dyskusyjnych, aplikacje pocztowe oraz klienty baz danych.

 

 

Kategoria: