Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Programowanie obiektowe dla początkujących

Obiekt, klasa? Co to jest?

Po krótkim wprowadzeniu czas na przedstawienia podstawowych pojęć i implementacji programowania obiektowego w php5.

W php istnieją podstawowe typy danych: liczby całkowite (int), zmiennoprzecinkowe (double, float), tablice (array), łańcuchy znaków (string), wartości logiczne (boolean), zasoby (resource), wartość null. Istnieją również typy klasowe. Czym różni się klasa od obiektu? Klasa to "szablon", "foremka" do tworzenia konkretnych egzemplarzy obiektów. Jest to struktura, która posiada swoje atrybuty (składowe) oraz metody (funkcje) które mogą zmieniać wartość tych atrybutów lub wykonywać inne operacje. Stan obiektu określa wartość wszystkich składowych.

Klasę definiuje się w następujący sposób:

class Dog{
    //ciało klasy, tutaj powinny być zdefiniowane atrybuty oraz metody
}

Obiekt, czyli konkretny egzemplarz danej klasy można utworzyć tak:

$reksio = new Dog();//mój piesek reksio

Operator "new" służy do utworzenia konkretnego egzemplarza klasy. Ogólny sposób tworzenia obiektów można zapisać tak:

$object = new NazwaKlasy($arg1, $arg2, $arg3...);

Argumenty wstawione między nawiasy są przekazywane do konstruktora, czyli metody konstruującej obiekt, która jest wywoływana zawsze podczas inicjacji obiektu.

class Dog{
    public $name;//atrybut przechowujący imię psa

    /*konstruktor*/
    public function __construct($name){
        $this->name = $name;
    }
}

Od php5 wprowadzono zunifikowaną nazwę konstruktora, a mianowicie "__construct" (dwa znaki podkreślenia!). W php4 konstruktor miał taką samą nazwę co klasa, a więc w tym przypadku by to wyglądało tak:

//ciach
function Dog($name){
    $this->name = $name;
}
//ciach

Php5 jest wstecznie kompatybilne, jeśli interpreter php nie znajdzie konstruktora o nazwie __construct to zacznie szukać konstruktora o takiej samej nazwie co klasa, jeśli znajdzie to go wywoła.

Atrybuty klasy definiuje się zwyczajowo na samym początku (niektórzy definiują je na samym końcu) klasy. Nie ma tutaj twardej reguły, ale nie można definiować atrybutów wewnątrz metod. Dostęp do metod i atrybutów wewnątrz klasy odbywa się poprzez argument niejawny $this. Znaczy to tyle, że dostęp do atrybutów można uzyskać poprzez napisanie $this->nazwaAtrybutu. Analogicznie można wywołać metody wewnątrz metod klasy: $this->nazwaMetody(). Argument $this odnosi się do konkretnego obiektu, a nie do klasy.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (3)
Błąd w przykładowym kodzie
Wtorek 16 Luty 2010 2:33:32 pm - mateo84 <mateo84_at_o2.pl>

Witam, próbowałem się zaznajomić z projektowaniem obiektowym w php i pozytywnie odbieram fakt, że komuś chce się pisać te wszystkie poradniki i tutoriale, tak jak ten. Ale niestety mam uwagę. 3. Modyfikacja dostępu w kodzie 4 (licząc od góry) metoda getName() nie wyświetla ani Reksio ani też Jamnik Reksio. Zapewne dlatego że gdzieś wypadałoby wpisać "echo". Jeżeli jest to zależne od konfiguracji serwera to przepraszam ja, ale jeżeli autor nie przetestował działania skryptu to coś tu jest nie "helloł".
Pozdrawiam :)

Za malo o istocie OOP
Niedziela 29 Marzec 2009 7:22:56 pm - seth

Brakuje mi w tym artykule opisu filozofii pisania obiektowego. To co w nim jest to tylko opis narzedzi ktore udostepnia PHP 5, a przeciez programowanie obiektowe to cos wiecej niz uzywanie slowek class, extend itp.

Jako, ze jest to tekst dla poczatkujacych brak wprowadzenia w istote OOP jest dla mnie bardzo duzym minusem.

Jezeli juz kogos chcemy uczyc obiektowki to zadbajmy o to aby wiedzial po co mu to do szczescia i jakie problemy rozwiazuje. W przeciwnym razie osoba taka dostaje do reki mlotek z instrukcja obslugi ale nie wie po co w ogole ma wbijac te gwozdzie.

Nie dla początkujących
Piątek 27 Marzec 2009 9:36:11 pm - orglee

Panie Piotrze posługuje się Pan bardzo hermetycznym językiem, opisując podstawy obiektówki. Nie wiem czy będąc początkującym zrozumiałbym więcej niż połowę z tego artykułu. Oprócz tego czasami wyprzedza Pana, Pańskie myślenie. Przykładem może być, użycie słów opisujących proces dziedziczenia, przed wytłumaczeniem istoty tego zagadnienia.

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2017 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System