W budowie
Podstawy paradygmatu obiektowego, cykl życia instancji i praca ze składowymi

Część 22 · Programowanie obiektowe: klasy, obiekty i konstruktor — kurs PHP INF.03

Część 22 kursu PHP INF.03: Programowanie obiektowe (OOP) w PHP. Definiowanie klas, tworzenie obiektów, właściwości i metody, pseudozmienna $this, konstruktor i destruktor oraz 16 pytań quizowych.

  • 45 min
  • 15 slajdów
  • Notatki nauczyciela: N
  • Strona modułu: otwórz
Plan · 45 min

Co dziś robimy

  1. 14 minKlasa i obiekt W klasie umieszczamy właściwości (dane) i metody (funkcje).
  2. 13 minWłaściwości i metody W klasie można też zdefiniować metodę __toString() , która pozwala wypisać obiekt przez…
  3. 13 minKonstruktor i destruktor Parametry konstruktora podajemy w nawiasach przy new : new Uczen('Ola', 18) .
  4. 5 minPodsumowanie bilet wyjściowy i zadanie domowe
Atom 1 z 4 · ~14 min

Klasa i obiekt

Klasa to przepis, a obiekt to konkretna rzecz zrobiona według tego przepisu. Klasę definiujemy słowem class , a obiekt tworzymy operatorem new .

  • W klasie umieszczamy właściwości (dane) i metody (funkcje).
  • Do właściwości i metod obiektu odwołujemy się strzałką: $uczen->imie , $uczen->przedstaw() .
  • Jeden przepis może opisywać wiele obiektów.
  • Każdy obiekt ma własne wartości właściwości, mimo że korzysta z tych samych metod.
Kod · atom 1 · ~3 min

Jak to wygląda w kodzie

class Uczen {
    public $imie;
    public $punkty;

    public function przedstaw() {
        return $this->imie . ' ma ' . $this->punkty . ' pkt';
    }
}

$ola = new Uczen();
$ola->imie = 'Ola';
$ola->punkty = 18;
echo $ola->przedstaw();
Przykład na żywo · atom 1 · ~4 min

Uruchom i pokaż

class Uczen {
    public $imie;
    public $punkty;

    public function przedstaw() {
        return $this->imie . ' ma ' . $this->punkty . ' pkt';
    }
}

$ola = new Uczen();
$ola->imie = 'Ola';
$ola->punkty = 18;
echo $ola->przedstaw();
Sprawdzenie · atom 1 · ~2 min

Pytanie do klasy

Czym jest klasa?

Atom 2 z 4 · ~13 min

Właściwości i metody

Właściwości deklarujemy w klasie, najczęściej z modyfikatorem dostępu. Metody to funkcje w klasie; mają dostęp do właściwości przez $this , które oznacza „ten obiekt”.

  • W klasie można też zdefiniować metodę __toString() , która pozwala wypisać obiekt przez echo .
  • Bez niej PHP zgłosi błąd konwersji.
  • Metoda może przyjmować parametry i zwracać wynik, tak jak zwykła funkcja.
  • Dobrą praktyką jest jedna odpowiedzialność metody: albo liczy, albo wypisuje.
Kod · atom 2 · ~3 min

Jak to wygląda w kodzie

class Prostokat {
    public $bokA;
    public $bokB;

    public function pole() {
        return $this->bokA * $this->bokB;
    }

    public function obwod() {
        return 2 * ($this->bokA + $this->bokB);
    }
}

$p = new Prostokat();
$p->bokA = 4;
$p->bokB = 3;
echo 'Pole: ' . $p->pole() . ', obwod: ' . $p->obwod();
Przykład na żywo · atom 2 · ~4 min

Uruchom i pokaż

class Prostokat {
    public $bokA;
    public $bokB;

    public function pole() {
        return $this->bokA * $this->bokB;
    }

    public function obwod() {
        return 2 * ($this->bokA + $this->bokB);
    }
}

$p = new Prostokat();
$p->bokA = 4;
$p->bokB = 3;
echo 'Pole: ' . $p->pole() . ', obwod: ' . $p->obwod();
Sprawdzenie · atom 2 · ~2 min

Pytanie do klasy

Co oznacza $this?

Atom 3 z 4 · ~13 min

Konstruktor i destruktor

Konstruktor __construct() wykonuje się automatycznie przy tworzeniu obiektu. W nim ustawiamy wartości początkowe, żeby obiekt nigdy nie był „pusty”.

  • Parametry konstruktora podajemy w nawiasach przy new : new Uczen('Ola', 18) .
  • To wygodniejsze niż ustawianie każdej właściwości osobno.
  • Destruktor __destruct() wykonuje się przy usuwaniu obiektu.
  • Rzadko jest potrzebny — zwykle wystarczy konstruktor i zwykłe metody.
Kod · atom 3 · ~3 min

Jak to wygląda w kodzie

class Uczen {
    public $imie;
    public $punkty;

    public function __construct($imie, $punkty = 0) {
        $this->imie = $imie;
        $this->punkty = $punkty;
    }
}

$ola = new Uczen('Ola', 18);
$jan = new Uczen('Jan');
echo $ola->imie . ' ' . $ola->punkty . ' / ' . $jan->punkty;
Przykład na żywo · atom 3 · ~4 min

Uruchom i pokaż

class Uczen {
    public $imie;
    public $punkty;

    public function __construct($imie, $punkty = 0) {
        $this->imie = $imie;
        $this->punkty = $punkty;
    }
}

$ola = new Uczen('Ola', 18);
$jan = new Uczen('Jan');
echo $ola->imie . ' ' . $ola->punkty . ' / ' . $jan->punkty;
Sprawdzenie · atom 3 · ~2 min

Pytanie do klasy

Kiedy działa konstruktor?

Zamknięcie · ~3 min

Co zabrać z lekcji

  • W klasie umieszczamy właściwości (dane) i metody (funkcje).
  • W klasie można też zdefiniować metodę __toString() , która pozwala wypisać obiekt przez echo .
  • Konstruktor __construct() wykonuje się automatycznie przy tworzeniu obiektu.
  • Ćwiczenia — Quiz wiedzy o programowaniu obiektowym (16 pytań)
Bilet wyjściowy: Po co wartości domyślne w konstruktorze?
Odpowiedź: d) By tworzyć prostsze obiekty
Hyżyk· Część 22 · Programowanie obiektowe: klasy, obiekty i konstru moduł 1 / 1