Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před rokem

westrem
dibi guru
Registrovaný: 13. 1. 2009
Příspěvky: 425

DibiRow nededi od DibiObject

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?


Nette 2.0 alpha2 Namespaced for PHP 5.3 // http://westrem.posterous.com

 

#2 před rokem

paranoiq
dibi guru
Registrovaný: 14. 11. 2006
Příspěvky: 350

Re: DibiRow nededi od DibiObject

protože dědí do PHPčkového ArrayObject

 

#3 před rokem

westrem
dibi guru
Registrovaný: 13. 1. 2009
Příspěvky: 425

Re: DibiRow nededi od DibiObject

paranoiq napsal(a):

protože dědí do PHPčkového ArrayObject

Ja tam zadne extends nevidim: DibiRow Source File


Nette 2.0 alpha2 Namespaced for PHP 5.3 // http://westrem.posterous.com

 

#4 před rokem

paranoiq
dibi guru
Registrovaný: 14. 11. 2006
Příspěvky: 350

Re: DibiRow nededi od DibiObject

aha! koukal jsem na obstarožní verzi z jara. strč to do issues na githubu

 

#5 před rokem

westrem
dibi guru
Registrovaný: 13. 1. 2009
Příspěvky: 425

Re: DibiRow nededi od DibiObject

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:-)


Nette 2.0 alpha2 Namespaced for PHP 5.3 // http://westrem.posterous.com

 

#6 před rokem

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 5548

Re: DibiRow nededi od DibiObject

K čemu by dědění od DibiObject bylo dobré?

 

#7 před rokem

westrem
dibi guru
Registrovaný: 13. 1. 2009
Příspěvky: 425

Re: DibiRow nededi od DibiObject

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?


Nette 2.0 alpha2 Namespaced for PHP 5.3 // http://westrem.posterous.com

 

#8 před rokem

PetrP
Moderator
Registrovaný: 15. 7. 2008
Příspěvky: 657

Re: DibiRow nededi od DibiObject

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.

 

#9 před rokem

westrem
dibi guru
Registrovaný: 13. 1. 2009
Příspěvky: 425

Re: DibiRow nededi od DibiObject

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

Nette 2.0 alpha2 Namespaced for PHP 5.3 // http://westrem.posterous.com

 

#10 před rokem

paranoiq
dibi guru
Registrovaný: 14. 11. 2006
Příspěvky: 350

Re: DibiRow nededi od DibiObject

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

 

#11 před rokem

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 5548

Re: DibiRow nededi od DibiObject

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.

 

#12 před rokem

jenda_groovy
Nový člen
Registrovaný: 8. 12. 2010
Příspěvky: 3

Re: DibiRow nededi od DibiObject

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 ?

 

Zápatí