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:
{{Programowanie}}
{{programowanie}}
{{t}}to wieloparadygmatowy, proceduralny i dynamiczny język programowania. Jest on rozszerzeniem [[C (język programowania)|C]] dodającym wiele nowych bezużytecznych funkcji<ref>[http://www.php.net/quickref.php Lista funkcji PHP]</ref>, pozwalającym na tworzenie stron internetowych i pozbywającego go preprocesora. Ze względu na dużą popularność, trudno znaleźć [[serwer]] nie obsługujący PHP. Praktycznie nie stosowany na normalnych komputerach. Ostatnio ze względy na [[protest]]y [[programista|programistów]] dodano możliwość programowania obiektowego.

'''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ę]].


== Programowanie w PHP ==
== Programowanie w 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.
[[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">
<source lang="php">
Nonsensopedia jest wspaniała!<br> <? // najprostsza wersja echo() poza kodem ?>
Nonsensopedia jest wspaniała!<br> <? // najprostsza wersja echo() - poza kodem ?>


<?
<?
error_reporting(-9223372036854743049);
error_reporting(-9223372036854743049);
echo 'Nonsensopedia ',jest,chr(32),'wspaniała!<br>' ;
echo 'Nonsensopedia ',jest,chr(32),'wspaniała!<br>' ;
print 'Nonsensopedia '.jest.chr(32).'wspaniała!<br>' ; /* używa się tu kropek, nie przecinków */
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
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
die ('Nonsensopedia '.jest.chr(32).'wspaniała!<br>'); # odpowiednik print, ale z nawiasami
</source>
?>
</syntaxhighlight>


== Zwracanie błędów ==
== 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.
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 nie zaicjalizowanych 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]].
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 kodu poniżej zawiera błąd o którym PHP informuje.


<source lang="php">
=== Przykład 1 ===
Przykład kodu poniżej zawiera błąd o którym PHP informuje.

<syntaxhighlight lang="php">
<?
<?
function sł33t_::_fónkj1a (^^ )--
function sł33t_::_fónkj1a (^^ )--
Linia 33: Linia 27:
echo 'Nonsensopedia '.jest.chr(32).'wspaniała!<br>';
echo 'Nonsensopedia '.jest.chr(32).'wspaniała!<br>';
}
}
</source>
?>
</syntaxhighlight>
'''Parse error:''' syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting '(' in '''[[:/dev/null]]''' on line '''2'''


'''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ść ==
== 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.
Niektóre języki programowania, na przykład [[C Sharp|C#]] są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami [[Microsoft 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]]ach 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ć.
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>[[`]]</code> do uruchamiania zewnętrznych programów (czytaj: symulatora <code>printf</code>), ale jego też można zablokować.


== Znane programy napisane w PHP ==
== Zobacz też ==
* WordPress - ze względu na szybką konfigurację wykorzystywany do tworzenia blogów przez [[Pokemon (osoba)|nastolatki]].
* [[HTML]]
* Simple Machine Forums - skrypt do tworzenia [http://www.sweetbrokacik.pl/ słit forumz]
* [[JavaScript]]
* [[MediaWiki]] - skrypt Wiki wykorzystywany przez [[Wikipedia|Wikipedię]]
* [[Perl]]
* [[Python]]
* [[PL/SQL]]


{{przypisy}}
{{stubinf}}
[[Kategoria:Języki programowania]]
[[en:PHP]]
[[en:PHP]]
[[ja:PHP]]
[[ja:PHP]]
[[ko:PHP]]
[[ko:PHP]]
[[pt:PHP]]
[[pt:PHP]]
[[ru:PHP]]
{{stopka}}
[[Kategoria:Języki programowania]]
Cc-white.svg Wszystko, co napiszesz na Nonsensopedii, zgadzasz się udostępnić na licencji cc-by-sa-3.0 i poddać moderacji.
NIE UŻYWAJ BEZ POZWOLENIA MATERIAŁÓW OBJĘTYCH PRAWEM AUTORSKIM!
Anuluj Pomoc w edycji (otwiera się w nowym oknie)
Źródło: „https://nonsa.pl/wiki/PHP