tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

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:

  1. som myslel, ze sa jedna o bug, kedze DibiRow uz nededi od ArrayObjectu a ze sa zabudlo nahradit dedenim od DibiObjectu
  2. 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 ?