konstruktory v modelu a obecně návrh
- qteck
- Člen | 164
Ahoj,
snažím se načíst obsah tabulky a to tím způsobem že jsem si vytvořil připojení v base repository.php a dědím ho ve třídě Article.
netbeans mi furt varuje ať použiju volání rodičovského konstruktoru.. od php 5 jsem četl že by se to mělo, ale chce to vložit aspoň jeden parametr.
jenže já tímto způsobem nic předávat nepotřebuju, chtěl jsem si jenom zavolat obsah tabulky v konstruktoru a pak vytvořit metody na volání konkrétního sloupce:
class Article extends BaseRepository
{
protected $article;
function __construct()
{
parent::__construct();
$this->article = $this->conn->table(lcfirst(__CLASS__));
}
function getArticleById(){..... $this->article->where(1)}
}
teĎ se na to koukám a zdá se mi to trochu nechutné, ale stejně, pro pořádek aspoň, kdybych to tak chtěl udělat, bylo by to takto správně, nebo jakým způsobem by to mělo být?
je to spíše obecně php dotaz, tak sorry about that.
Díky
- Oli
- Člen | 1215
Ten konstruktor v BaseRepository předpokládám dostává proměnnou která
nese Nette\Database\Context. A ty když zavoláš
parent::__construct();
tak mu musíš tu proměnnou dát. Jinak ti
to bude nadávat jak píšeš. Tzn předat si Context do té třídy Article
nebo nevolat konstruktor předka a řešit to nějakým setrem.
- qteck
- Člen | 164
ou aha, ta k to jo, znamená to, že když žádnej novej kontruktor volat nebudu, tak to funguje pro mě tím tradičním způsobem, že se prostě podědí ten rodič sám?
jo a teď si si naťuknul setter.
četl jsem o setterech a getterech, že udájně je nette \ object dotahuje k dokonalosti (J. V.).
na php net jsem si přečetl:
__set() is run when writing data to inaccessible properties.
__get() is utilized for reading data from inaccessible properties
nikdy předtím jsem s tím nepracoval a tak nevím jak je mohu v nette využít a čemu vlastně slouží? a jak moc jsou v nette duelžití, obejdu se bez nich? Potřebuji je?
Díky.
- Mesiah
- Člen | 240
qteck napsal(a):
ou aha, ta k to jo, znamená to, že když žádnej novej kontruktor volat nebudu, tak to funguje pro mě tím tradičním způsobem, že se prostě podědí ten rodič sám?
Pokud to chápu správně, tak ano, nemusíš deklarovat kontruktor, pokud do něj nepotřebuješ přidat dodatečnou logiku.
jo a teď si si naťuknul setter.
četl jsem o setterech a getterech, že udájně je nette \ object dotahuje k dokonalosti (J. V.).
ano, Object je hodně vychytaný
na php net jsem si přečetl:
__set() is run when writing data to inaccessible properties.
__get() is utilized for reading data from inaccessible propertiesnikdy předtím jsem s tím nepracoval a tak nevím jak je mohu v nette využít a čemu vlastně slouží? a jak moc jsou v nette duelžití, obejdu se bez nich? Potřebuji je?
__set() je zavolaný, když zapisuješ do nedeklarované property/slotu.
__get() je volaný, když čteš data z nedeklarované property/slotu.
to se hodí například, když nad třídou A zavoláš něco jako $a->teddy = „Brown“, kde
class A {
public $toy;
}
jak vidíš, $teddy není deklarovaný, tak se zavolá magický setter, kde
si můžeš přečíst jaká property je volaná a eventuálně s tím něco
udělat. To je jedna z věcí, co dělá Object vychytaný.
Tohle ale není záležitost Nette, ale samotného PHP, takže je to spíše
offtopic a doporučuju nastudovat OOP v PHP.
Díky.
Np.