I. Na początek
II.Instalacja i konfiguracja
III. Opis języka
IV. Bezpieczeństwo
V. Możliwości
VI. Opis funkcji
VII. Zend API
VIII. PHP API: Interfejs rozszerzeń
X. Dodatki

Manual PHP

Zapraszam do korzystania z zamieszczonego przeze mnie manuala php. Mam nadzieję, że ta jego kopia przyda się zarówno profesjonalnym programistą, jak i początkującym twórcą skryptów PHP.

Autorzy

Mehdi Achour,
Friedhelm Betz,
Antony Dovgal,
Nuno Lopes,
Philip Olson,
Georg Richter,
Damien Seguy,
Jakub Vrana,
I kilka innych

Redakcja:

Gabor Hojtsy,
Marcin Dąbrowski, Michał Grzechowiak, Leszek Krupiński, Adam Major, Paweł Paprota, Michał Pena, Sławomir Pucia, Jarek Tabor, Tomasz Wójtowicz,

Konstruktory

Uwaga!

Konstruktory zachowują się inaczej w PHP 3 i w PHP 4. Semantyka PHP 4 jest mocno zalecana.

Konstruktory są funkcjami klasy, które są automatycznie wywoływane przy tworzeniu nowej instancji klasy korzystając z operatora new. W PHP 3 funkcja staje się konstruktorem kiedy ma taką samą nazwę jak klasa. W PHP 4 funkcja staje się konstruktorem, kiedy ma taką samą nazwę jak klasa, w której ta funkcja została zdefiniowana - różnica jest subtelna, ale bardzo ważna (zobacz poniżej)

// Działa w PHP 3 i PHP 4.
class Auto_Koszyk extends Koszyk
{
    function Auto_Koszyk()
    {
        $this->dodaj_artykul ("10", 1);
    }
}

Ten kod definiuję klasę Auto_Koszyk, który jest klasą Koszyk pluc konstruktor, który inicjalizuje wózek z jednym artykułem "10" za każdym razem, kiedy Auto_Koszyk jest tworzony operatorem "new". Konstruktory mogą pobierać argumenty i te argumenty mogą być opcjonalne, przez co są jeszcze bardziej użyteczne. Aby w dalszym ciągu móc używać klasy bez parametrów, wszystkie parametry konstruktora powinny stać się opcjonalne przez dodanie domyślnych wartości.

// Działa w PHP 3 i PHP 4.
class Kontruktor_Koszyk extends Koszyk
{
    function Konstruktor_Koszyk($artykul = "10", $ilosc = 1)
    {
        $this->dodaj_artykul ($artykul, $ilosc);
    }
}

// Kup te same nudne rzeczy...

$zwykly_koszyk = new Konstruktor_Koszyk;

// Czas na prawdziwe zakupy...

$inny_koszyk = new Konstruktor_Koszyk("20", 17);

Możesz także użyć operatora @ aby wyciszyć błędy zachodzące w konstruktorze, np. @new

Uwaga!

W PHP 3, dziedziczone klasy i konstruktory mają wiele ograniczeń. Poniższe przykłady powinny być dokładnie przeczytane w celu zrozumienia tych ograniczeń.

class A
{
    function A()
    {
      echo "Jestem konstruktorem klasy A.<br>\n";
    }
}

class B extends A
{
    function C()
    {
        echo "Zwykła funkcja.<br>\n";
    }
}

// W PHP 3 nie zostanie wywołany żaden konstruktor.
$b = new B;

W PHP 3 w powyższym przykładzie nie będzie wywołany żaden konstruktor. Zasadą PHP 3 jest: 'Konstruktor to funkcja o takiej samej nazwie jak klasa'. Nazwą klasy jest B, a w klasie B nie ma funkcji o nazwie B(). Nic się nie dzieje.

Zostało to poprawione w PHP 4 przez wprowadzenie innej zasady: jeśli klasa nie ma konstruktora, używany jest konstruktor klasy bazowej, jeśli taki istnieje. W PHP 4 powyższy przykład wyświetli 'Jestem konstruktorem klasy A.<br>'.

class A
{
    function A()
    {
        echo "Jestem konstruktorem klasy A.<br>\n";
    }

    function B()
    {
        echo "Jestem zwykłą funkcją o nazwie B w klasie A.<br>\n";
        echo "Nie jestem konstruktorem w klasie A.<br>\n";
    }
}

class B extends A
{
    function C()
    {
        echo "Jestem zwykłą funkcją.<br>\n";
    }
}

// Wywoła to B() jako konstruktor.
$b = new B;

W PHP 3, funkcja B() z klasy A niespodziewanie stanie się konstruktorem w klasie B, pomimo że wcale nie miała nim być. Zasadą PHP 3 jest: 'Konstruktor to funkcja o takiej samej nazwie co klasa'. PHP 3 nie obchodzi czy funkcja została zdefiniowana w klasie B czy została odziedziczona.

Zostało to poprawione w PHP 4 przez modyfikację tej zasady do: 'Konstruktor to funkcja o tej samej nazwie co klasa w której została zdefiniowana'. W związku z tym w PHP 4 clasa B nie miałaby własnego konstruktora. Wywołany byłby tylko konstruktor klasy bazowej, wyświetlając 'Jestem konstruktorem klasy A.<br>'.

Uwaga!

Ani PHP 3 ani PHP 4 nie wywoła automatycznie konstruktora klasy bazowej z kontruktora klasy pochodnej. Twoim zadaniem jest propagacja wywołań konstruktorów klas nadrzędnych, jeśli to konieczne.

Notatka: Ani w PHP 3 ani w PHP 4 nie ma destruktorów. Zamiast tego możesz użyć register_shutdown_function() aby symulować działanie destruktorów.

Destruktory są funkcjami, które są wywoływanie automatycznie kiedy obiekty są niszczone albo przez użycie unset() albo przez wyjście z zasięgu. W PHP nie ma destruktorów.


print 'Poliamid 1171501927' . "\n"; print 'Termy 1171501581' . "\n"; print 'Kształtki 1171501896' . "\n"; print 'Viagra 1171501573' . "\n";