[[oktatas:programozás:php:php oop|< PHP OOP]]
====== PHP OOP leválasztás interfésszel ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2020
* [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Példa program =====
==== Leírás ====
Ebben a példában az interfész használatát mutatom be.
Az interfésszel egy felületet biztosítunk, ami lehetővé teszik
többféle megvalósítás használatát, az adatbázis kapcsolathoz.
Az adatbázisban eseményeket tárolunk, amelyet szeretnénk megjeleníteni
egy weblapon.
{{:oktatas:programozas:php:php_oop:oop_adatbazis_terv.png|}}
A példában két osztályt és egy interfészt készítünk:
{{:oktatas:programozas:php:php_oop:oop_terv.png|}}
A page objektumot a Page osztályból hozzuk létre, amelynek a
konstruktora paramétereként fogadja, az adatbázis kapcsolathoz
szükséges osztályt. Az adatbázis kapcsolatot a Mariadb osztály
szolgáltatja, mégis azért cserélhető, mert Page konstruktorában
nem a Mariadb osztály van megadva, helyette az iDatabase
interfész.
A követelmény mindössze az, hogy Mariadb osztály implementálja
az iDatabase interfészt.
A példainterfész használatának előnye, hogy az adatbázis-elérés megvalósítása
könnyen cserélhető.
==== Kód ====
-- az adatbázis
create database vmi;
create table website (
id int not null primary key auto_increment,
event varchar(100)
);
connect_error) {
echo('Hiba! Kapcsolódás az adatbázishoz sikertelen!
');
}
$this->conn = $conn;
return $this->conn;
}
public function close() {
$this->conn->close();
}
public function getEvent() {
$this->connect();
$sql='select event from website';
if($res = mysqli_query($this->conn, $sql)) {
$row = $res->fetch_assoc();
$event = $row['event'];
}else {
echo "Hiba! A lekérdezés nem sikerült!
";
}
$this->close();
return $event;
}
}
db = $db;
}
public function showEvent() {
$event = $this->db->getEvent();
echo "Esemény: $event
";
}
}
showEvent();