<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title><![CDATA[Diskuse k článku DbDibiOrm - DibiConnection - staticky, instančně, přistupovat přímo k dibi factory? - Webfaq.cz | PHP weblog]]></title>
    <link>http://www.webfaq.cz</link>
    <description>PHP weblog o programování. Najdete tady věci už vyřešené, ale i takové o kterých se moc nemluví. Přinejmenším uvidíte individuální pohled na různé úkoly, se kterými se setkává programátor při tvorbě webových aplikací.</description>
    <language>cs</language>
    <pubDate>Tue, 07 Sep 2010 12:49:07 GMT</pubDate>
    <lastBuildDate>Tue, 07 Sep 2010 12:49:07 GMT</lastBuildDate>
    <managingEditor>info@webfaq.cz (Webfaq.cz)</managingEditor>
    <webMaster>info@webfaq.cz (Webfaq.cz)</webMaster>
    <generator>Soliscms - info@soliscms.cz</generator>
    <ttl>60</ttl>
    <item>
      <title><![CDATA[[17.12.2009 23:45] Jakub: Re: Re: Re: Re: Re: jako ASP.NET MVC]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary512</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary512</guid>
      <description><![CDATA[Když to spojíte, budete muset za a) přepisovat repository při změně databázového systému a za b) by jste musel psát SQL dotazy pro všechny tabulky do jedné třídy! v podstatě jde o DB layer. Repository uchovává připojení k DB a podle názvu modelu dokáže najít tu třídu, co tahá věci z tabulky. Článek se pokusím najít.]]></description>
      <pubDate>Thu, 17 Dec 2009 22:45:48 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[17.12.2009 00:24] Administrátor: Re: Re: Re: Re: jako ASP.NET MVC]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary502</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary502</guid>
      <description><![CDATA[1. Model=řádek tabulky to je jasné, tam není co vymýšlet, ať už bude umět cokoli nebo odkazovat na cokoli co to dělá a vrací přes tento model výsledek (to máme tedy náš Customer, Product, User, Order, Invoice)

2. akorát dál mi není jasná ta podobnost mezi třídou co tahá věci z tabulky a repository, přijde mi, že celkem úspěšně tohle můžeme spojit, nebo považujete Repository za v podstatě db layer?

je o tom někde nějaký rozumný a čitelný výtah? nějaký tip?]]></description>
      <pubDate>Wed, 16 Dec 2009 23:24:06 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[17.12.2009 00:16] Jakub: Re: Re: Re: jako ASP.NET MVC]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary501</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary501</guid>
      <description><![CDATA[Ano, je to &amp;quot;jen&amp;quot; cache, ale určitě ne hloupá a dělá jen jednu věc, přesně podle zásad OOP. V tom ASP.NET když použijete Ling to SQL, což je podle mě nejpoužívanější, tak se vygeneruje třída, která odpovídá řádku tabulky (což je ten váš model), pak třída, která tahá věci z tabulky do toho modelu a pak třída repository, kterou jedinou voláte a která vrací právě jen holý model. Má to několik výhod, není to závislé na databázi (myslím tím, že můžete vyměnit SQL 2008 za MySQL a přepíšete jen třídu, která tahá věci z db), je to perfektně zapouzdřené a můžete použít kolik chcete db připojení - pokud ovšem repository třída nebude singleton - a neovlivní to váš model. Všechno měníte na jednom místě. Předávat nějaké metodě instanci připojení podlě mě stojí čas, místo a nemá to tam co dělat.]]></description>
      <pubDate>Wed, 16 Dec 2009 23:16:06 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[16.12.2009 21:40] Administrátor: Re: Re: jako ASP.NET MVC]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary499</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary499</guid>
      <description><![CDATA[A není Repository to co říkám? CustomerTable, ProductTable? To je přece vzor Repository ne?

Ono ale podle mne i model řádku v tabulce, tedy Product1 (name=šroubovák), nebo Product2 (name=vrtačka), by měl snad umět pracovat s databází ne? 

Co třeba potřeba 
1. ukaž produkty které si někdo zakoupil společně

tak asi zavolám Product1-&amp;gt;getProductsWhoBuyAlso()

samozřejmě bych to mohl předat nějaké Repository (ProductRepository extends Repository) a říci

ProductRepository::getProductsWhoBuyAlsoWith(Product1-&amp;gt;id)

ale není to krkolomné? no možná je to v pořádku, pak tedy model je jen hloupá cache, instance databázového řádku a všechny akce nad ním vykonávám prostřednictvím nějaké černé krabičky

případně můžeme implementovat metodu

Product1-&amp;gt;getProductsWhoBuyAlso() {
return ProductRepository::getProductsWhoBuyAlsoWith(this-&amp;gt;id)
}
]]></description>
      <pubDate>Wed, 16 Dec 2009 20:40:42 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[16.12.2009 20:01] Jakub: Re: jako ASP.NET MVC]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary498</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary498</guid>
      <description><![CDATA[ještě příklad:

$user = new UserModel();
$user-&amp;gt;name = &amp;quot;Jakub&amp;quot;;

repository::save($user);

Repository by měla asi být singleton třída, aby byla dostupná všude. Zdá se mi to jako nejčistší OOP řešení.]]></description>
      <pubDate>Wed, 16 Dec 2009 19:01:39 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[16.12.2009 19:59] Jakub: jako ASP.NET MVC]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary497</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary497</guid>
      <description><![CDATA[Mě jako čísté řešení příjde nemíchat připojení k databázi vůbec do modelu, ale udělat si speciální třídu, která se bude starat o transakce s DB (bude ty modely ukládat), myslím, že se tomu říká vzor Repository]]></description>
      <pubDate>Wed, 16 Dec 2009 18:59:28 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[16.12.2009 11:26] Administrátor: Re: getDb v Ormionu]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary489</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary489</guid>
      <description><![CDATA[1. prosím určitě to neber jako kritiku, to jakým způsobem bude tahle funkce napsána je dost zásadní, proto jestli má smysl funkce typu **static function find()**, protože pokud je nutné přistupovat k db instančně tak tyhle funkce nemají smysl ve statickém kontextu
2. no to je zhruba to co píšu v článku, tedy mám nějakou abstraktní třídu Customer? a tu podědím do Db1Customer a Db2Customer a každý znich bude pracovat s jiným connection? je to tak, to je jediná možnost využití? Chtěl sem vědět jen jestli to lze nějak reálně použít a jestli tahle funkce má význam protože, jak jsem psal, Customer může někde uvnitř spolupracovat s Productem a ten už zase neví se kterým connection pracovat?

tedy existuje příklad využítí takového Dependency Injection?

můj názor je, že v případě, že je to konstruováno tak, aby šlo využít DI, tak si odpálím větev pod nohama, aniž bych věděl jestli mám kam skočit]]></description>
      <pubDate>Wed, 16 Dec 2009 10:26:52 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[16.12.2009 11:02] Honza Marek: getDb v Ormionu]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary488</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary488</guid>
      <description><![CDATA[Je nějaký důvod, aby sis z Ormionu nepodědil BaseModel a v tom si metodu getDb přepsal? Tak je to zamýšlené.]]></description>
      <pubDate>Wed, 16 Dec 2009 10:02:41 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[15.12.2009 21:35] Administrátor: Re: Re: Re: Předávat DibiConnection.]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary485</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary485</guid>
      <description><![CDATA[a já měl pocit, že to je jeden z důvodů proč lidi toli požadují late static binding, protože ono i bez toho se dá obejít]]></description>
      <pubDate>Tue, 15 Dec 2009 20:35:51 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[15.12.2009 21:08] v6ak: Re: Re: Předávat DibiConnection.]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary483</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary483</guid>
      <description><![CDATA[Ano, pokud bude ta třída mít ty metody statické. Což jsem rozebíral vedle.]]></description>
      <pubDate>Tue, 15 Dec 2009 20:08:58 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[15.12.2009 19:02] Administrátor: Re: Předávat DibiConnection.]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary480</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary480</guid>
      <description><![CDATA[problém s instancí bude, že stěží lze použít např. ve statické metodě Customer::find(1) jak si tady šáhnu na instanci (resp. každá statická metoda co vrací sadu objektů si musí nejprve jeden vytvořit, aby získala připojení k databázi)? to mne nutí ke statické vlastnosti]]></description>
      <pubDate>Tue, 15 Dec 2009 18:02:03 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[[15.12.2009 18:09] v6ak: Předávat DibiConnection.]]></title>
      <link>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary479</link>
      <guid>http://www.webfaq.cz/clanek/DbDibiOrm-DibiConnection-staticky-instancne-pristupovat-primo-k-dibi-factory#commentary479</guid>
      <description><![CDATA[Principiálně bych doporučil odněkud brát instanci DibiConnection, třeba v konstruktoru.
Pokud to bude nevyhovující, je možné vytvořit potomka, který bude mít:
function __construct(){
  parent::__construct(dibi::getConnection());
}]]></description>
      <pubDate>Tue, 15 Dec 2009 17:09:29 GMT</pubDate>
    </item>
  </channel>
</rss>
