⊗ppMVDFmMdP 35 of 35 menu

Implementace rodiče všech modelů ve vlastním MVC frameworku

Pojďme implementovat rodičovskou třídu všech modelů:

<?php namespace Core; class Model { private $link; public function __construct() { $this->link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); mysqli_query($this->link, "SET NAMES 'utf8'"); } protected function findOne($query) { // tady bude nějaký kód } protected function findMany($query) { // tady bude nějaký kód } } ?>

Jak vidíte, v konstruktoru třídy provádíme připojení k databázi. Existuje však problém: každý vytvořený model (pokud uvnitř jedné akce kontroleru bude několik modelů) vytvoří své vlastní připojení k databázi, což není optimální.

Udělejme to tak, aby připojení k databázi bylo vytvořeno pouze pro první vytvořený model a ostatní modely používaly již vytvořené připojení. K tomu uděláme vlastnost link statickou:

<?php namespace Core; class Model { private static $link; public function __construct() { if (!self::$link) { // pokud vlastnost není nastavena, připojíme se self::$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); mysqli_query(self::$link, "SET NAMES 'utf8'"); } } protected function findOne($query) { } protected function findMany($query) { } } ?>

Zkopírujte uvedený kód třídy Model a umístěte jej do souboru /core/Model.php.

Implementujte metodu findOne v této třídě. Vyzkoušejte její funkčnost.

Implementujte metodu findMany v této třídě. Vyzkoušejte její funkčnost.

bnidcsrufr