Wprowadzenie do PHP

Cele

- Poznanie podstaw języka PHP

Czego musisz się nauczyć:

- Podstawowej składni: zmienne, instrukcje if, for, foreach, proste funkcje (operacje na tekście-łańcuchach)
- Warto wiedzieć: co to są tablice i jak dostać się do danych w nich zawartych
- Co to są funkcje i jak wyglądają

Przydatne Linki

W sieci są bardzo dobre wprowadzenia do języka. Warto z nich skorzystać:
- Kurs PHP na wikibooks - dobre wprowadzenie w podstawy PHP !
- Dokumentacja PHP - tutaj szukamy funkcji, ich opisu itp.
- Proszę nie panikować. Pierwsze lekcje będą dokładniej omawiały kod :)

PHP, Klasy i Frameworki

PHP jest językiem skryptowym stosującym prostą składnię. Kod umieszcza się w plikach o domyślnym rozszerzeniu *.php i następnie umieszcza na serwerze posiadającym interpreter PHP. Przykładowe fragmenty kodu na jakie natrafiamy w czasie nauki języka składają się najwyżej z kilkudziesięciu linijek kodu. Prawdziwe aplikacje mają ich tysiące albo i więcej. Rozwój PHP jak i sposób tworzenia aplikacji zmierza w kierunku jak najlepszego poukładania tych linijek kodu w przejrzystą i czytelną postać. Obecnie stosowanym sposobem organizacji aplikacji jest m.in. projektowanie obiektowe - grupowanie kodu w elementy odpowiedzialne za określone zadania. Każdy komponent składa się z elementów potrafiących wykonywać określone czynności np.: "moduł" artykułów zawiera takie elementy jak "dodaj artykuł", "usuń artykuł" itd. To jest uproszczona koncepcja programowania obiektowego. "Modułem" jest klasa a "elementem" metoda klasy.

FUNKCJE

Zanim zabierzemy się za klasy zajmiemy się funkcjami. Funkcja wykonuje określoną czynność. Może np. wyświetlić datę czy zamienić duże litery na małe. Może też połączyć się z bazą danych i wykonać wiele innych czynności. PHP posiada funkcje wbudowane czyli te, z których korzystamy, np: date(), trim(), file(). Można też tworzyć własne funkcje i tym się zajmiemy. Szkieletowa funkcja wygląda tak:
<?php
function funkcja()
 {
 return 'zwracana wartość';
 }
?>
Funkcję definiujemy za pomocą słowa "function", po którym podajemy nazwę funkcji i nawiasy (). Klamry określają kod funkcji. Funkcja może (powinna) ale nie musi zwracać jakąś wartość. Komenda return zwraca podaną wartość lub zmienną. return tym różni się od echo czy print (w uproszczeniu) że nie wyświetli danych:
<?php

function funkcja()
 {
 return 'zwracana wartość';
 }
funkcja(); // nic nie wyświetli
echo funkcja(); // wyświetli tekst
Wynik funkcji, która coś zwraca można przypisać do zmiennej - $zmienna = funkcja();. Funkcje mogą (z natury są) bardziej złożone. Pobierają listę argumentów, na których wykonują operacje. Np. echo strlen('tekst'); wyświetli długość łańcucha. Funkcja "strlen" pobiera jako argument łańcuch i zwraca liczbę całkowitą. W przypadku własnych funkcji wyglądałoby to tak:
<?php
function funkcja($tekst)
        {
        return strtoupper($tekst);
        }
echo funkcja('to jest parametr');

function domyslna($tekst = 'wartość domyślna')
 {
 return strtoupper($tekst);
 }
echo domyslna();
Listę argumentów podaje się w nawiasie po nazwie funkcji. Każdy parametr - zmienną oddzielamy przecinkiem. Zastosowana nazwa będzie przechowywać dane przekazane do funkcji. W drugim przypadku mamy $zmienna = 'coś' - przypisanie wartości do zmiennej w definicji funkcji oznacza jej wartość domyślną tj. jeżeli funkcję wywołamy bez podania argumentu to zostanie używa wartość domyślna. Podsumowanie:
<?php

function funkcja($liczba1, $liczba2 = 2)
 {
 return $liczba1+$liczba2;
 }
echo funkcja(4); // 4+2 = 6
echo '<BR>';
echo funkcja(1, 1); // 1+1 = 2
?>

KLASY

Klasy to w uproszczeniu zbiór funkcji. Oto przykładowa klasa:
<?php
class Klasa
{
function funkcja()
     {
     return 'a';
     }
function inna($a)
     {
     return trim($a);
     }
}
$obiekt = new Klasa();
echo $obiekt->funkcja();
?>
Klasę definiujemy stosując słowo "class" i podając po nim nazwę klasy. Nawiasy klamrowe określają zawartość klasy. Klasa zawiera "funkcje" które nazywa się metodami. Metody definiuje się jak funkcje.
Klasy natomiast wywoływane są inaczej niż funkcje. Pierwszym etapem jest stworzenie obiektu klasy:
<?php
$obiekt = new NAZWAKLASY();
Nowy obiekt tworzy się stosując słowo "new", po którym podajemy nazwę klasy (tak jakby była to funkcja). Zmienna ($obiekt w przykładzie) do której przypiszemy stworzony obiekt będzie miała dostęp do wszystkich metod, które wywołujemy: $obiekt->NAZWAMETODY();. Może istnieć wiele obiektów tej samej klasy.

Klasy mają dodatkowe możliwości. Konstruktor to metoda wykonywana automatycznie przy tworzeniu obiektu. Destruktor (PHP5) to metoda wykonywana przy zakończeniu korzystania z obiektu. W PHP4 konstruktor ma taką samą nazwę jak nazwa klasy. W PHP5 konstruktor ma nazwę __construct a destruktor __destruct. Jako że CI jest zgodny z PHP4 nie będziemy się wgłębiać w rozbudowany (i dobry) model obiektowy PHP5. Przykład konstruktora:
<?php
class Klasa
{
function Klasa($start)
     {
     echo $start;
     }
function funkcja()
     {
     return 'a';
     }
}

$obiekt = new Klasa('test');
echo $obiekt->funkcja();
?>
"test" wyświetli się mimo iż nie wywołaliśmy metody "Klasa". Jest ona konstruktorem naszej klasy. Konstruktory (i destruktory) stosuje się np. do zainicjowania i zamknięcia połączeń z bazami danych, przygotowania ogólnie potrzebnych danych.

Zasięg zmiennych - w funkcjach zmienne wewnątrz nie są dostępne na zewnątrz i na odwrót, chyba że daną zmienną określi się jako globalną. Można tak robić w klasach ale nie jest to zalecane jako że "niszczy" to sens stosowania klas (niezależne klocki aplikacji o jasno określonym działaniu). Dodatkowo klasy mają zmienne dostępne we wszystkich metodach:
<?php
class Klasa
{
function Klasa($start)
     {
     $this->zmienna = $start;
     }
function funkcja()
     {
     return 'test: '.$this->zmienna;
     }
}

$obiekt = new Klasa('test');
echo $obiekt->funkcja();
?>
$this-> określa zmienne dostępne globalnie wewnątrz klasy. Zazwyczaj takie zmienne ustawiane są w konstruktorze a potem wykorzystywane przez poszczególne metody.

FRAMEWORKI

Frameworki to narzędzia/aplikacje ułatwiające i przyśpieszające tworzenie aplikacji. Ich zadaniem jest dostarczyć proste rozwiązania najczęstszych problemów tak by programista nie musiał zaczynać od zera zajmując się pierdołami. Tworząc system newsów interesuje nas system newsów a nie system sprawdzania poprawności danych z formularzy, system skór, system uprawnień, interfejs do bazy danych itd. Framework ma mieć gotowe rozwiązania na wszystkie pierdoły i nie przeszkadzać w tworzeniu zamierzonych aplikacji. Obecne frameworki stosują określony wzorzec projektowania. Każdy z nich w określony sposób porządkuje kod :)

Code Igniter (CI)

Jest to prosty a zarazem dobry framework, na którym można się i uczyć i tworzyć dobre aplikacje. Strona: http://codeigniter.com/. Zbliżające się lekcje nauczą cię korzystania z CI, szybkiego tworzenia dobrych aplikacji. Nie jest idealny...
RkBlog

Kurs Code Igniter, 14 July 2008

Comment article
Comment article RkBlog main page Search RSS Contact