PHP OOP - Třídy a objekty
Třída je šablona pro objekty a objekt je instancí třídy.
Případ OOP
Předpokládejme, že máme třídu s názvem Fruit. Ovoce může mít vlastnosti, jako je název, barva, váha atd. Můžeme definovat proměnné jako $jméno, $barva a $hmotnost, abychom udrželi hodnoty těchto vlastností.
Když jsou vytvořeny jednotlivé objekty (jablko, banán atd.), zdědí všechny vlastnosti a chování ze třídy, ale každý objekt bude mít jiné hodnoty vlastností.
Definujte třídu
Třída je definována pomocí class
klíčového slova, za kterým následuje název třídy a dvojice složených závorek ({}). Všechny jeho vlastnosti a metody jdou do rovnátek:
Syntax
<?php
class Fruit {
// code goes here...
}
?>
Níže deklarujeme třídu s názvem Fruit sestávající ze dvou vlastností ($name a $color) a dvou metod set_name() a get_name() pro nastavení a získání vlastnosti $name:
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Poznámka: Ve třídě se proměnné nazývají vlastnosti a funkce se nazývají metody!
Definujte objekty
Třídy nejsou nic bez předmětů! Z jedné třídy můžeme vytvořit více objektů. Každý objekt má všechny vlastnosti a metody definované ve třídě, ale budou mít různé hodnoty vlastností.
Objekty třídy se vytvářejí pomocí new
klíčového slova.
V níže uvedeném příkladu jsou $jablko a $banán instancemi třídy Ovoce:
Příklad
<?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();
?>
V níže uvedeném příkladu přidáme do třídy Fruit dvě další metody pro nastavení a získání vlastnosti $color:
Příklad
<?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 – klíčové slovo $this
Klíčové slovo $this odkazuje na aktuální objekt a je dostupné pouze uvnitř metod.
Podívejte se na následující příklad:
Příklad
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
Kde tedy můžeme změnit hodnotu vlastnosti $name? Existují dva způsoby:
1. Uvnitř třídy (přidáním metody set_name() a použitím $this):
Příklad
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. Mimo třídu (přímou změnou hodnoty vlastnosti):
Příklad
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - instanceof
Klíčové slovo můžete použít instanceof
ke kontrole, zda objekt patří do konkrétní třídy:
Příklad
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>