Edytujesz „PHP”
Z Nonsensopedii, polskiej encyklopedii humoru
Uwaga: Nie jesteś zalogowany. Jeśli wykonasz jakąkolwiek zmianę, Twój adres IP będzie widoczny publicznie. Jeśli zalogujesz się lub utworzysz konto, Twoje zmiany zostaną przypisane do konta, wraz z innymi korzyściami.
Ta edycja może zostać anulowana. Porównaj ukazane poniżej różnice między wersjami, a następnie zapisz zmiany.
Aktualna wersja | Twój tekst | ||
Linia 1: | Linia 1: | ||
'''PHP''' - język który działa jak skrypt CGI wygląda jak skrypt CGI - ale nim nie jest!!! |
|||
{{Programowanie}} |
|||
Jak to! się spytacie. Ano tak, bo wersja 4 jest napisana o dziwo od nowa. Twórcy wszystko jeszcze raz przepisywali (i z błędami!), zamiast zaznaczyć tekst i nacisnąć Ctrl+c a potem Ctrl+v. No tacy ludzie to jak buszmeni, ledwo umieją pisać, a się zabierają do poważnych działań. |
|||
Z Historii wynika, że zrobienie PHP zlecił Hitler, który jako buszmen zaczął odczuwać potrzebę internetu, bo mu żona monitor zjadła, a procesor jego się wylał, bo na nim dziecko pisało swoją nogą. |
|||
'''PHP''' – język wywołujący u [[Programista|programistów]] wychowanych na językach z typowaniem statycznym popłoch, [[Panika|panikę]], a w skrajnych przypadkach nawet zbiorową [[Histeria|histerię]]. |
|||
Ale powracając do tematu, bez PHP nie byłoby Internetu, ale Internet byłby bez PHP. |
|||
== Programowanie w PHP == |
|||
[[Plik:Młotek PHP.jpg|thumb|350px|Młotek zrobiony bazując na doświadczeniach z PHP]] |
|||
Programowanie w PHP jest bardzo proste ze względu na olbrzymią liczbę funkcji. Dla przykładu, jeśli chcesz napisać „[[Nonsensopedia]] jest wspaniała!” możesz to zrobić na wiele różnych sposobów. Funkcje są często bardzo podobne, na przykład <code>echo</code> jest tym samym co <code>print</code>, tyle że w <code>echo</code> oddzielasz wyrazy przecinkami, a w <code>print</code> kropkami. |
|||
<syntaxhighlight lang="php"> |
|||
Nonsensopedia jest wspaniała!<br> <? // najprostsza wersja echo() – poza kodem ?> |
|||
<? |
|||
error_reporting(-9223372036854743049); |
|||
echo 'Nonsensopedia ',jest,chr(32),'wspaniała!<br>' ; |
|||
print 'Nonsensopedia '.jest.chr(32).'wspaniała!<br>' ; /* używa się tu kropek, nie przecinków */ |
|||
printf('Nonsensopedia '.jest.chr(32).'wspaniała!<br>'); // funkcja przeniesiona z C, wymaga nawiasów |
|||
die ('Nonsensopedia '.jest.chr(32).'wspaniała!<br>'); # odpowiednik print, ale z nawiasami |
|||
?> |
|||
</syntaxhighlight> |
|||
== Zwracanie błędów == |
|||
Funkcja <code>error_reporting()</code> ustawia poziom informacji o błędach. Jak łatwo się domyślić, poziom -9223372036854743049 znaczy że PHP powinien informować o wszystkich błędach, z wyjątkiem tych które mogłyby zmniejszyć kompatybilność z C (jak na przykład używanie niezaicjalizowanych zmiennych). Aby PHP informował o wszystkich błędach, nawet tych wprowadzonych w przyszłości trzeba użyć 9223372036854775807. |
|||
PHP jest znany z pomocnych komunikatów błędów, które wymagają bycia poliglotą. Nie dość że trzeba znać [[Język angielski|angielski]], ale także inne języki takie jak [[Język niemiecki|niemiecki]], [[Język francuski|francuski]], [[Język japoński|japoński]] czy nawet [[Język hebrajski|hebrajski]]. |
|||
=== Przykład 1 === |
|||
Przykład kodu poniżej zawiera błąd o którym PHP informuje. |
|||
<syntaxhighlight lang="php"> |
|||
<? |
|||
function sł33t_::_fónkj1a (^^ )-- |
|||
{ |
|||
echo 'Nonsensopedia '.jest.chr(32).'wspaniała!<br>'; |
|||
} |
|||
?> |
|||
</syntaxhighlight> |
|||
'''Parse error:''' syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting '(' in '''[[:/dev/null]]''' on line '''2''' |
|||
=== Przykład 2 === |
|||
Innym, bardziej zrozumiałym błędem jest występujący w następującej funkcji. |
|||
<syntaxhighlight lang="php"> |
|||
<? |
|||
function pomnóż_przez_dwa(integer $i) { |
|||
return $i * 2; |
|||
} |
|||
echo '2 * 2 = ', pomnóż_przez_dwa(2); |
|||
?> |
|||
</syntaxhighlight> |
|||
2 * 2 = '''PHP Catchable fatal error:''' Argument 1 passed to pomnóż_przez_dwa() must be an instance of integer, integer given, called in /dev/null on line 5 and defined in '''/dev/null''' on line '''2''' |
|||
== Intuicyjność == |
|||
PHP jest znany ze swojej nieziemskiej intuicyjności, dzięki czemu programista przesiadający się z innego języka może wręcz natychmiast zacząć tworzyć niezwykle kreatywne i niespotykane nigdzie indziej bugi i problemy. Na szczególną uwagę zasługuje mechanizm ''żonglerki błędami'' (ang. type juggling), który pozwala programiście w prosty i wygodny sposób dodać do swojej aplikacji kilka luk bezpieczeństwa. Przykładowy kod wykorzystujący wspomnianą funkcję: |
|||
<syntaxhighlight lang="php"> |
|||
<?php |
|||
$tablica = array(); |
|||
$tablica[3.123456] = 5; |
|||
$tablica[3.777777] = 10; |
|||
if ($tablica[3.123456] == 10) { |
|||
echo('WSZYSTKO '); |
|||
} |
|||
if ("20000000000000001" == "20000000000000000") { |
|||
echo('OŁRAJT!'); |
|||
} |
|||
?> |
|||
</syntaxhighlight> |
|||
'''Wynik:''' WSZYSTKO OŁRAJT! |
|||
Mechanizm ten jest na tyle transparentny i instynktowny, że większość zagorzałych programistów PHP nawet nie wie o jego istnieniu, a mimo to z sukcesem bije rekordy pod względem ilości dodanych <del>linijek kodu</del> błędów. |
|||
== Przenośność == |
|||
Niektóre języki programowania, na przykład [[C Sharp|C#]] są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami [[Windows Vista|Visty]] jest wiele warta). PHP idzie o krok dalej. Kod zachowuje się inaczej w zależności od konfiguracji PHP, więc nawet między systemami możesz się spodziewać trochę innego zachowania kodu. Na przykład, opcja <code>magic_quotes_gpc</code> dostawia slashe do danych użytkownika, ponieważ według autorów PHP im więcej slashy tym lepiej. Oczywiście można je usunąć funkcją <code>stripslashes()</code>, ale wtedy twój kod będzie usuwać slashe celowo wstawione w [[komputer osobisty|komputerach]] które nie mają tej opcji włączonej. |
|||
Ale to nie wszystko – można wyłączyć każdą funkcję bez problemu w konfiguracji. Nie lubisz <code>printf</code> – nie ma sprawy, zmień jedną linijkę w konfiguracji. To co że zewnętrzny kod używający jej nie będzie działać. Oczywiście jeśli tego nie lubisz możesz użyć znaku <code>[[grawis|`]]</code> do uruchamiania zewnętrznych programów (czytaj: symulatora <code>printf</code>), ale jego też można zablokować. |
|||
== Zobacz też == |
|||
* [[HTML]] |
|||
* [[JavaScript]] |
|||
* [[Perl]] |
|||
* [[Python]] |
|||
* [[PL/SQL]] |
|||
[[en:PHP]] |
|||
[[ja:PHP]] |
|||
[[ko:PHP]] |
|||
[[pt:PHP]] |
|||
{{stopka}} |
|||
[[Kategoria:Języki programowania]] |