Oznámení
DibiRow nededi od DibiObject
před 9 lety
- westrem
- Člen | 398
Ahoj,
uz dlhsiu dobu sa cudujem, preco DibiRow implicitne nededi od DibiObject.
V pripade DibiResult->setResultClass totiz treba nastavit class, ktora by
mala dedit od DibiRow.
Kedze vsak PHP zatial neumoznuje viacnasobne dedenie tak class, ktoru chcem takto nastavit automaticky prichadza o vyhody DibiObjectu.
Je preto nejaky realny dovod, preco prave DibiRow nededi od DibiObjectu?
před 9 lety
- paranoiq
- Člen | 388
protože dědí do PHPčkového ArrayObject
před 9 lety
- westrem
- Člen | 398
paranoiq napsal(a):
protože dědí do PHPčkového ArrayObject
Ja tam zadne extends nevidim: DibiRow Source File
před 9 lety
- paranoiq
- Člen | 388
aha! koukal jsem na obstarožní verzi z jara. strč to do issues na githubu
před 9 lety
- westrem
- Člen | 398
paranoiq napsal(a):
aha! koukal jsem na obstarožní verzi z jara. strč to do issues na githubu
Okej pridane do issues, aj ked dufam, ze dobre, s GitHubom som este nepracoval O:-)
před 9 lety
- David Grudl
- Nette Core | 6806
K čemu by dědění od DibiObject bylo dobré?
před 9 lety
- westrem
- Člen | 398
David Grudl napsal(a):
K čemu by dědění od DibiObject bylo dobré?
Ako spominam v prvom prispevku, pre metodu setRowClass
sa
„odporuca“ nastavovat triedu, ktora je potomok DibiRow. Ak chceme dodrziavat
danu konvenciu a mame vytvorenu urcitu triedu, ktora reprezentuje nasu entitu
v databaze tak tym, ze DibiRow nededi od DibiObject prichadzame v nasej
entitnej triede o vsetky jeho vyhody.
Naviac som mal pocit ze triedy Object, resp. DibiObject maju tendenciu byt prapredkami akehokolvek objektu, preco teda zrazu tato vynimka?
Je taky problem zaimplementovat to dedenie?
před 9 lety
- PetrP
- Člen | 587
westrem napsal(a):
Naviac som mal pocit ze triedy Object, resp. DibiObject maju tendenciu byt prapredkami akehokolvek objektu, preco teda zrazu tato vynimka?
Od toho se upustilo už před dávnem, spousta tříd v nette nedění od Nette\Object.
Je taky problem zaimplementovat to dedenie?
A je takový problém implementovat si to sám? ;] Tedy udělat si třídu:
abstract class BaseEntity extends DibiRow
{
...
public function __set($name, $value)
{
return ObjectMixin::set($this, $name, $value);
}
...
}
Ale jinak není žádný důvod aby entity dědily od DibiRow.
před 9 lety
- westrem
- Člen | 398
Od toho se upustilo už před dávnem, spousta tříd v nette nedění od Nette\Object.
Tak toto rozhodnutie mi asi nejak uniklo, ako som si cital API od Nette 0.9.5 prislo mi, ze takmer vsetko dedilo od Objectu.
A je takový problém implementovat si to sám? ;] Tedy udělat si třídu:
Nie je, ja mam na entity napisanu celkom peknu, silnu triedu, ktora sklbuje vsetky vyhody DibiRow, Objectu plus par drobnosti naviac.
Ale jinak není žádný důvod aby entity dědily od DibiRow.
No je ci neni. Ak nededis od DibiRow a nemas naimplementovane veci na ArrayAccess, IteratorAggregate a Countable tak prichadzas o array-like syntax a niekomu to mozno nemusi dojst.
Celkovo som tento „problem“ postol pretoze:
- som myslel, ze sa jedna o bug, kedze DibiRow uz nededi od ArrayObjectu a ze sa zabudlo nahradit dedenim od DibiObjectu
- by sa to mohlo napr. zaciatocnikom hodit ak by dedilo od DibiObjectu
před 9 lety
- paranoiq
- Člen | 388
som myslel, ze sa jedna o bug, kedze DibiRow uz nededi od ArrayObjectu a ze sa zabudlo nahradit dedenim od DibiObjectu
také jsem měl ten dojem
před 9 lety
- David Grudl
- Nette Core | 6806
Třídy Object byly vždy prapředky těch tříd, u kterých to mělo smysl. Nikdy třeba nebyly prapředky statických tříd (jako je například Debug) nebo „anonymních tříd“. Skutečně mě nenapadá, k čemu by bylo dědictví Object třídě DibiRow ku prospěchu. Tím neříkám, že by nebylo, jen mě to nenapadá a tak se ptám.
před 9 lety
- jenda_groovy
- Člen | 3
Ahoj,
zacinam s nette/dibi a rozhodl jsem se jej pouzit na jeden projekt, abych si jej vyzkousel v praxi.
Pouzival jsem doted dibi tusim 1.2. Po upgrade na 1.3 se ale projevila zde popisovana zmena (ArrayObject ⇒ ArrayAccess), se kterou jsem nepocital.
V nekterych modelech jsem pouzival privatni promenne s pomocnymi daty, ted se mi ale pri pretypovani na array dostavaji tyto privatni promenne do vysledku (je to vlastne standartni pretypovani objektu na pole). Docela mi tam vadi, prebublavaji do SQL dotazu.
Jak si s tim poradit ?