AGNIESZKA LEŚKÓW

Programowanie obiektowe: klasy i obiekty

KOMPENDIUM

Programowanie obiektowe: klasy i obiekty

Programowanie zorientowane obiektowo (z ang. OOP – Object Oriented Programming) jest odwzorowaniem otaczającego nas świata, oparte na bazie rzeczywistych obiektów.

Obiekty tworzymy na bazie pewnego wzoru, szablonu, generatora dla nowych obiektów zwanego klasą. Klasa jest zestawem pól (właściwości, zmiennych), metod (funkcji), z których korzysta nowo stworzony obiekt. Obiekt jest instancją tej danej klasy. Na bazie jednej klasy możemy tworzyć wiele obiektów. Klasy zapisujemy z dużej litery a dla zachowania ścisłego hermetycznego porządku w osobnych plikach w katalogu przeznaczonym tylko dla modelu klas.

<?php

//(katalog) model / (plik) Customer.php

// deklaracja klasy, nazwę klasy zawsze rozpoczynamy z dużej litery:
       class Customer {
// atrybuty(cechy) obiektu - zmienne przechowujące pewne wartości z zaznaczonymi modyfikatorami dostępu:
          public $id;
          private $name;
          protected $paymenttype;

// konstruktor klasy
          public function __construct($id, $name, $paymenttype) {
                $this->id = $id;
                $this->name = $name;
                $this->paymenttype = $paymenttype;
          }
// metody klasy
          function getInfo() {
                return "" . $this->id . "" . $this->name . "" . $this->paymenttype . "";
          }
          function __toString() {
                return $this->getInfo();
          }
       }

?>

Modyfikatory dostępu: public, private, protected, static

public – dostęp do pól i metod publiczny dla wszystkich, dostępny wewnątrz i na zewnątrz

private – dostęp do pól i metod tylko wewnątrz obiektu, niedostępny na zewnątrz, nie jest dziedziczony

protected – dostęp do pól i metod wewnątrz obiektu oraz dziedziczących, niedostępny na zewnątrz

static – działa globalnie, wspólne pola i metody dla wszystkich istniejących obiektów, najlepiej tego nie używać

Stworzenie nowego obiektu i sprawdzenie na jakiej bazie klasy został stworzony

Nowy obiekt tworzymy poprzez użycie słowa kluczowego new.

<?php

       $firstCustomer = new Customer(1, "Jan Nowak", "karta");

       $firstCustomer = new Customer(1, "Jan Nowak", "karta");
       var_dump($firstCustomer instanceof Customer);
       // bool(true)

       echo get_class($firstCustomer);
       // Customer

?>

Zdefiniowanie nowych obiektów (instancji danej klasy) na bazie zadeklarowanej klasy

<?php

       $customers = [
          new Customer(1, "Jan Nowak", "karta"),
          new Customer(2, "Maria Wiśniewska", "przelew"),
          new Customer(3, "Aldona Kowalczyk", "blik"),
          new Customer(4, "Tadeusz Zieliński", "gówka"),
          new Customer(5, "Anna Kowalska", "czek"),
       ];

       echo "<table><thead><tr><td>ID</td><td>Name</td><td>Payment type</td></thead><tbody><tr>";
       foreach ($customers as $customer) {
          echo $customer->getInfo();
       }
       echo "</tr></tbody></table>";

       // w tabeli zostaną wyświetlone wszystkie dane z tablicy

?>

$this – zmienna dostępna tylko wewnątrz obiektu, dzięki której można odwoływać się do pól i metod nie używając przy nich znaku $.

-> – za pomocą strzałki uzyskujemy dostęp do pól i metod i możemy modyfikować, pobierać wartości atrybutów, wykonywać pewne funkcje, oraz pobierać wartości zawracane przez te funkcje.

Specjalne Magiczne Metody – natywne w PHP

__construct( ){ }
__destruct( ){ }
__toString( ){ }
__get( ){ }
__set( ){ }
__set_state( ){ }
__isset( ){ }
__unset( ){ }
__call( ){ }
__callStatic( ){ }
__clone( ){ }
__sleep( ){ }
__wakeup( ){ }
__serialize( ){ }
__unserialize( ){ }
__invoke( ){ }
__debugInfo( ){ }

Wszystkie magiczne metody muszą być zadeklarowane jako publiczne, z wyjątkiem:
__construct( ){ }
__destruct()
__clone()

Więcej na ten temat można uzyskać pod adresem https://www.php.net/manual/en/language.oop5.magic.php

Wróć do Kompendium