Diskuze: Interfaces v MVC
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 2 zpráv z 2.
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
interface použiju v případě, že chci, abych měl jistotu, že objekt, se
kterým budu komunikovat, umí něco konkrétního dělat. Například kdybych
dělal skript, který bude ukládat někam data, tak si udělám interface
např. IDataSavable, a to mi může implementovat třída, která ukládá data
do databáze, třída, která ukládá data do souboru atd. Mě pak nezajímá,
kam
se ta data ukládají, ale vím, že to ta třída umí uložit
Pokud bys chtěl dělat interface pro jedno konkrétní využití (ukládání článků do databáze), pak nevidím v interface smysl. Smysl bych viděl třeba v interface, které by říkalo, že daný objekt umí odněkud články tahat. Např. by definoval
interface IArticleDownloader
{
public function getArticles(DateTime $dateFrom, DateTime $dateTo);
}
a pak by toto mohly implementovat například tyto třídy:
// tahání článků z databáze
class DbArticleDownloader implements IArticleDownloader
{
private $db;
public function getArticles(DateTime $dateFrom, DateTime $dateTo)
{
return $this->db->fetchAll("
SELECT * FROM `article`
WHERE `date_published` > ? AND `date_published` < ?
", $dateFrom, $dateTo);
}
}
// tahání článků z API cizího serveru
class ApiArticleDownloader implements IArticleDownloader
{
private $url = "www.stranka-se-clanky.cz/api/articles";
private $httpClient;
public function getArticles(DateTime $dateFrom, DateTime $dateTo)
{
// uvažme, že by se posílal požadavek na server a druhým parametrem se předaly GET / POST data
return $this->httpClient->sendRequest($this->url, array(
"dateFrom" => $dateFrom,
"dateTo" => $dateTo
));
}
}
Pokud ale máš jeden konkrétní úkol - "tahat články z databáze", tak v tom osobně nevidím moc smysl.
Zobrazeno 2 zpráv z 2.