PHP OOP - Klasy i obiekty
Klasa jest szablonem dla obiektów, a obiekt jest instancją klasy.
Sprawa OOP
Załóżmy, że mamy klasę o nazwie Fruit. Owoc może mieć właściwości takie jak nazwa, kolor, waga itp. Możemy zdefiniować zmienne, takie jak $nazwa, $kolor i $waga, aby przechowywać wartości tych właściwości.
Kiedy tworzone są poszczególne obiekty (jabłko, banan itp.), dziedziczą one wszystkie właściwości i zachowania z klasy, ale każdy obiekt będzie miał inne wartości właściwości.
Zdefiniuj klasę
Klasę definiuje się za pomocą class
słowa kluczowego, po którym następuje nazwa klasy i para nawiasów klamrowych ({}). Wszystkie jego właściwości i metody znajdują się w aparatach ortodontycznych:
Składnia
<?php
class Fruit {
// code goes here...
}
?>
Poniżej deklarujemy klasę o nazwie Fruit składającą się z dwóch właściwości ($name i $color) oraz dwóch metod set_name() i get_name() do ustawiania i pobierania właściwości $name:
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Uwaga: W klasie zmienne nazywane są właściwościami, a funkcje metodami!
Zdefiniuj obiekty
Zajęcia są niczym bez przedmiotów! Z jednej klasy możemy stworzyć wiele obiektów. Każdy obiekt ma wszystkie właściwości i metody zdefiniowane w klasie, ale będą miały różne wartości właściwości.
Obiekty klasy tworzone są za pomocą new
słowa kluczowego.
W poniższym przykładzie $jabłko i $banan są instancjami klasy Fruit:
Przykład
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
W poniższym przykładzie dodajemy jeszcze dwie metody do klasy Fruit, służące do ustawiania i pobierania właściwości $color:
Przykład
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP — $to słowo kluczowe
Słowo kluczowe $this odnosi się do bieżącego obiektu i jest dostępne tylko wewnątrz metod.
Spójrz na następujący przykład:
Przykład
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
Gdzie więc możemy zmienić wartość właściwości $name? Istnieją dwa sposoby:
1. Wewnątrz klasy (dodając metodę set_name() i używając $this):
Przykład
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. Poza klasą (poprzez bezpośrednią zmianę wartości nieruchomości):
Przykład
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - instancja
Możesz użyć instanceof
słowa kluczowego, aby sprawdzić, czy obiekt należy do określonej klasy:
Przykład
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>