--=REKLAMA=--

Niezbędne minimum PHP

Z Joomla!WikiPL

Wersja Bazyl (dyskusja | edycje) z dnia 21:46, 30 lis 2010

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Ikona przetlumacz.png
 Uwaga o zawartości

Ta strona wymaga przetłumaczenia lub jest w trakcie tłumaczenia! Pomoc jest mile widziana. Ostatnio edytowane przez Bazyl (dyskusja. Data edycji: Tue, 30 Nov 2010 21:46:42 +0000

PHP essentials

Wielu projektantów i właścicieli witryn internetowych nie ma doświadczeń z PHP, w którym napisane jest Joomla! i który wykorzystywany jest w szablonach dla Joomla!. Znajomość podstawowych instrukcji Joomla! jest niezbędna, by tworzyć szablony albo dostosowywać je do własnych potrzeb. Ten fragment (rozdział) przedstawia w prosty sposób, jak korzystać z różnych aspektów PHP w kontekście szablonów Joomla!. Przykładowo, objaśnia w prosty sposób składnię instrukcji warunkowej if-then-else stosowanej we fragmentach szablonów.

Najlepszym sposobem opanowania PHP jest prawdopodobnie doświadczenie praktyczne. To może być kłopotliwe dla osób, które nigdy wcześniej nie programowały. Chociaż Joomla! jest wystarczająco łatwy, by go z pomocą społeczności zainstalować.

Jednym z miejsc, gdzie znajdziesz listę funkcji i przykłady jest http://en.wikiversity.org/wiki/25_Essential_PHP_Functions, wystarczające, aby zaznajomić się z PHP, ale pełną listę funkcji, objaśnienia i przykłady znajdziesz na http://www.php.net.

Gdy zdobędziesz podstawy PHP, będziesz potrzebować podstaw składni PHP w Joomla!. Pewne spojrzenie na początek znajdziesz, przeglądając kod wybranych rozszerzeń oraz czytając znajdujące się w tym samym miejscu poradniki:

Przegląd tych materiałów będzie pomocny w zapoznaniu się z dostępnymi w Joomla! funkcjami i ich działaniem (stosowaniem API). Szczególnie poświęć swoją uwagę zrozumieniu koncepcji MCV (model - view - control).

Jeśli jednak jesteś zupełnym nowicjuszem w PHP, poniżej znajdziesz zwięzłe wprowadzenie.

Wprowadzenie do PHP

PHP jest językiem skryptowym przeznaczonym do tworzenia dynamicznych stron internetowych. Ogólnie rzecz mówiąc jest osadzany wewnątrz HTML za pomocą znaczników takich jak <?php ... ?>. When such a page is passed on to the PHP engine, the engine translates the PHP tags into HTML and which can then be rendered by a browser. Further during translation the script may require to pull data from a database and thus a database is needed. So for creating PHP pages we require in general, the PHP engine, a database typically MySQL and finally the webserver which will co-ordinate these actions and forward the final HTML to the browser. Te 3 składniki można zainstalować odrębnie, ale dla istnieją wygodne pakiety WAMP dla Windows. MAMP dla Mac oraz LAMP dla Linux, umożliwiające kompleksową instalację. Instalowanie pakietów omówione zostało dalej.

Instalacja PHP

Pakiet instalacyjny można pobrać ze strony WAMP. Akronim WAMP oznacza: Windows, Apache, MySQL, PHP. Instalacja jet bardzo prosta. Można jej dokonać w dowolnym katalogu (D:/wamp). Po zainstalowaniu można rozpocząć działanie programu ->start -WampSerwer. W wyniku instalacji na pulpicie powinna się pojawić ikona skrótu, umożliwiająca start /zatrzymanie/restart serwera, a także udostępniająca odnośniki do ważnych plików, np. php.ini czy innych plików konfiguracyjnych. Dla systemów Mac można skorzystać z MAM dostępnego tutaj. Można również wykorzystać XAMPP.

PHP Round trip

Naszym pierwszym celem jest napisanie niewielkiego skryptu PHP i przetworzenie go przez serwer internetowy Apache. WAMP domyślnie szuka stron do przetwarzania w katalogu dokumentów, który odtąd dla wygody nazwiemy WAMP_HOME. Otwórz więc swój ulubiony edytor tekstowy i stwórz stronę ze skryptem nazwaną pierwszy.php, a następnie zapisz ją w katalogu WAMP_HOME/www/x/y, gdzie x, y są folderami (które stworzysz, aby uporządkować swoje skrypty). Umieść w pliku następujący skrypt:

<html>
<head>
   <title>Podstawowa strona PHP</title>
</head>
<body>
<?php
echo ("Mój pierwszy urywek PHP");
?>
</body>
</html>

Zapisz plik, a następnie wywołaj w przeglądarce http://localhost/x/y/pierwszy.php. Powinieneś zobaczyć komunikat wysłany przez instrukcję echo.

Najważniejsze rzeczy, na które powinieneś zwrócić tutaj uwagę:

  1. Zaleca się, aby rozpocząć skrypt znacznikiem "<?php" i zakończyć znacznikiem "?>".
  2. Każdą instrukcję kończymy średnikiem.
  3. Katalog, w którym umieszczany jest skrypt, musi zostać dodany do URL

To kończy naszą podróż. Teraz dla nauki możesz dodawać do tego pliku kolejne elementy albo możesz tworzyć odrębne skrypty i załadować je w przeglądarce, aby sprawdzić efekt działania.

Deklaracje zmiennych i typy danych PHP

Programowanie zawsze wymaga jakichś danych. W PHP dane możemy przechowywać w następujący sposób:

  1. $nazwa_zmiennej = 0;
  2. Zauważ, że nie określiliśmy typu zmiennej. PHP nie wymaga określania typu zmiennych. Zmienna może przechowywać wartość dowolnego typu, pierwsze przypisanie wartości zmiennej tworzy zmienna, możliwe jest zastąpienie wartości zmiennej inną wartością o innym typie. Typ zmiennych nie jest sprawdzany ani w trakcie kompilacji, ani w trakcie wykonywania. W razie potrzeby PHP sam dokonuje konwersji typu zmiennych.
  3. nazwa zmiennej rozpoczyna się znakiem $ i może się składać z liter (małych bądź wielkich), cyfr (0-9) oraz znaku podkreślenia. Pierwszy znak po znaku $ nie może być cyfrą!
  4. deklarowanie stałych -
     define ("NAZWA_STALEJ" , $wartosc);

Stała jest identyfikatorem prostej wartości. Raz ustalona wartość stałej jest niezmienna. Odnośnikiem do stałych są ich identyfikatory. Wartość nadaje się słowem define.

Podstawowe operatory

Poniżej zestawiamy podstawowe operatory z krótkim objaśnieniem.

Operator Przykład Objaśnienie
+ 6 + 3 operator dodawania, wynikiem jest 9
6 - 3 operator odejmowania, wynikiem jest 3
/ 6 / 3 operator dzielenia, wynikiem jest 2
* 6 * 3 operator mnożenia, wynikiem jest 18
% 6 % 3 reszta z dzielenia, wynikiem jest 0
. '6'.'3' operator scalania (kontaminacji), efektem jest napis '63'
+= $x += 6 dodaje 6
-= $x -= 6 odejmuje 6
/= $x /= 6 dzieli przez 6
%= $x %= 6 zwraca resztę z dzielenia przez 6
.= $x .= '6' dołącza 6 do x
< $x < $y mniejsze niż; zwraca wartość true (prawda), jeżeli $x jest < $y
> $x > $y większe niż; zwraca wartość true (prawda), jeżeli $x jest > $y
== $x == $y równe'; zwraca wartość true (prawda), jeżeli wartość $x jest równa wartości $y
!= $x != $y nierówne; zwraca wartość true (prawda), jeżeli wartość $x nie jest równa wartości $y
=== $x === $y identyczne; zwraca wartość true (prawda), jeżeli $x oraz $y są identyczne oraz są tego samego typu
>= $x >= $y większe niż lub równe; zwraca wartość true (prawda), jeżeli $x jest >= $y
<= $x <= $y dmniejsze niż lub równe; zwraca wartość true (prawda), jeżeli $x jest <= $y
&& ($x == 2 && $y == 3) logiczne i, and; zwraca wartość true (prawda), jeżeli $x jest równe 2 oraz $y jest równe 3 (jeśli oba argumenty są prawdziwe)
|| ($x == 2 || $y == 3) logiczne lub, or; zwraca wartość true (prawda), jeżeli jedna z wartości jest prawdziwa: $x jest równe 2 albo $y jest równe 3
xor ($x == 2 xor $y == 3) logiczna różnica symetryczna; zwraca wartość true (prawda), jeżeli jeden z argumentów, ale nie oba, są prawdziwe: $x jest równe 2 albo $y jest równe 3, ale nie oba!
++ $x++ operator inkrementacji (zwiększania) $x
–- $x-- operator dekrementacji (zmniejszania) $x

Definiowanie struktury tablic

Sposoby tworzenia tablic
Tablice można tworzyć w PHP na trzy sposoby: przypisując wartość do jednego klucza, używając konstrukcji array () oraz wywołując funkcję, która zwraca jako wartość tablicę.

Prostą metodą jest zadeklarowanie w konstrukcji array () listy wartości, ale nie jest to metoda zbyt elegancka, gdy np. chcemy umieścić w tablicy 100 zmiennych. Zauważ, że PHP rozpoczyna indeksowanie od 0.

$moi_bohaterowie_gitary = array ("Hendrix", "Schenker", "Gilmour", "niewiele_nazw!");

Albo

$moi_bohaterowie_gitary [] = "Hendrix";
$moi_bohaterowie_gitary [] = "Schenker";
$moi_bohaterowie_gitary [] = "Gilmour";
$moi_bohaterowie_gitary [] = "niewiele_nazw!";

W tym przypadku PHP przypisuje indeks automatycznie. Albo

$moi_bohaterowie_gitary [0] = "Hendrix";
$moi_bohaterowie_gitary [10000] = "Mainak";

W tym przypadku znałem pierwszy i 10001 wpis (pamiętamy że numeracja zaczyna się od 0)

Albo kombinacja obu sposobów.

Albo

// Umieść elementy w pozycjach o wartości od 1 do 9999, "do decyzji".
$moi_bohaterowie_gitary  = array_fill( 1, 9999, "do decyzji" ); 

Uzyskanie dostępu do tablic

Bezpośrednią metodą odczytywania wartości z tablic jest użycie indeksu:

print $moi_bohaterowie_gitary[2]; //dostęp do 2. elementu

Albo

// Dostęp do ostatniego elementu (Zwróć uwagę, że pozycje elementu numerowane są od zera do 
// [ilosc elementow] minus jeden.)
$moi_bohaterowie_gitary[count($moi_bohaterowie_gitary)-1]; 

Albo

// Dostęp do ostatniego elementu za pomocą funkcji.
end($moi_bohaterowie_gitary); 

Przeglądanie elementów tablicy za pomocą iteracji

foreach ( $moi_bohaterowie_gitary as $temp) {
  print "$temp<br />";
}

Instrukcja spowoduje przejrzenie tablicy $moi_bohaterowie_gitary i ustalenie wartości $temp, która zostanie następnie wypisana na ekranie.

Instrukcje sterujące

Do wykonania poleceń i kolekcji poleceń używane są różne instrukcje sterujące. Przykłady poniżej obrazują składnię wyrażeń.

Konstrukcja if

Instrukcja if sprawdza prawdziwość wyrażenia i - jeśli jest prawdziwe - wykonuje polecenia:

if( $x > 0) {	
 print("$x jest dodatnie");
}  else if( $x < 0 ) {	
 print("$x jst ujemne");
} else {
 print("$x wynosi 0");
}

Pętla for Najpierw jeden raz wykonywane jest wyrażenie początkowe (zwykle używane do inicjalizacji zmiennych), następnie sprawdzany jest warunek zakończenia - jeżeli ma wartość false, pętla się kończy i wykonywane jest wyrażenie końcowe.

for ( $x=1; $x<= 10; $x++ ) {
 print "$x<br />";
}

Pętla while

Pętla oblicza wartość wyrażenia warunkowego, traktując je jako logiczne i wykonuje instrukcje ciała pętli, a następnie ponownie wylicza warunek. Jeżeli warunek jest fałszywy, wykonywanie jest kończone.

$x = 1
while ( $x <= 10 ) {
 print "$x<br />";
}

Pętla do while

Jest podobna do pętli while, ale tutaj najpierw wykonywane są instrukcje ciała pętli, a dopiero potem sprawdzany jest warunek. Jedyną praktyczną różnicą pomiędzy while i do-while jest to, że ciało pętli zostanie wykonane co najmniej raz.

$x = 1;
do {
 print "$x<br />";
 $x++;
}while($x <= 10);

Definiowanie funkcji

Kod, który jest powtarzany w wielu miejscach najlepiej umieścić w funkcji. Poniżej przedstawiono sposoby definiowania funkcji.

function nazwa_funkcji( $argumenty, $rozmiar='jakas_domyslna_wartosc' ) {
  print "tutaj rozpoczyna się kod"; 
  return "ta wartość zostanie zwrócona, instrukcja return jest opcjonalna";
}

Argumenty w powyższym przykładzie są przekazywane przez wartość. Jeśli chcesz przekazać argument przez odwołanie (referencję), musisz go poprzedzić znakiem "&", jak poniżej:

function nazwa_funkcji( &$argumenty, $rozmiar='jakas_domyslna_wartosc' ) {
  print "tutaj rozpoczyna się kod"; 
  return "ta wartość zostanie zwrócona, instrukcja return jest opcjonalna";
}

Zasięg zmiennych zdefiniowanych w funkcji jest ograniczony tylko do funkcji (zmienne zdefiniowane w funkcji są dostępne tylko wewnątrz funkcji.

Wywołanie funkcji

$x = add(5, 3);

Debagowanie

Podstawowe opcje wypisywania
Podstawowym sposobem debagowania jest wypisanie wartości zmiennej. Oto podstawowe reguły wyświetlania:

  • echo "zmienna z dolarem ujęta w podwójny cudzysłów, jest rozwijana (zastępowana wartością)";
  • echo 'zmienna z dolarem ujęta w pojedynczym apostrof, nie jest rozwijana';
  • print "inny sposób wypisywania zamiast echo";
  • nl2br("dowolna nowa linia ze znakami jak \n automatycznie rozpoczynana jest w HTML od nowej linii ");

W debagowaniu pomocne są pliki dzienników, które można znaleźć w katalogu WAMP_HOME/logs..

Handling forms

PHP does not change any HTML structure, thus any syntax of HTML remains the same. The part that PHP plays is making any part dynamic for e.g the action attribute of a form can be coded as action=<?php my_own_action(); ?> so that it is dynamically generated. The part where PHP kicks in is after the form is submitted, to say obtain the values of the form fields, set cookies etc. For this super global variables are used which are always available to PHP code. Some of these are

  1. $_GET - przechowuje wszystkie parametry, które są częścią żądania GET.
  2. $_POST - przechowuje wszystkie parametry, które są częścią żądania POST.
  3. $_REQUEST - przechowuje żądanie
  4. $_COOKIE - zawiera wszystkie wartości cookie przekazane jako część żądania
  5. $_SESSION - zawiera dane sesji

Wszystkie zmienne globalne są tablicami i zachowują się jak tablice.

PHP nie zmienia żadnej struktury HTML. Składnia HTML pozostaje taka sama.




Dziękujemy za wkład

» Piotr Kwiatkowski [ Bazyl ],