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