[[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();