struktura MVC pro vrstvu na ovládání databáze

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Hafran
Člen | 121
+
0
-

Zdravím,
mám databázi ve které mám spoustu stromových dat – např. menu/komentáře/katalogy aj. Používám Closure tree. Jelikož změna/přesun/editace větví a listů je poměrně pracná chci si vytvořit abstraktní vrstvu, která to bude dělat a do ni chci předávat například databáze, tabulky, strukturu a pak teprve proměnné. Prostě abych to nemusel psát pro každou situaci zvlášť a mohl to měnit centrálně.

Zajímalo by mě, kam bych to měl v Nette dát nemám s tím moc zkušeností. Jak to čistě začlenit do struktury MVP? Zda to má být model, na který se odkazují další modely nebo to udělat jako Componentu nebo rozšířit Database? Nebo prostě budu mít dva modely a budu si pamatovat který je který, jeden pro Closure tree, druhý pro zbylá data? Chci to mít čistě navrhnuto, ať to nepíšu každý měsíc znovu. ;) Dík

Jan Endel
Člen | 1016
+
0
-

Pokud tě správně chápu, tak bych šel cestou kompozice, že data potřebná pro pohyb ve stromě + třída co se o strom stará bude vlastně property té entity, která má ve stromě být.

Hafran
Člen | 121
+
0
-

No vypadá to, že mě správně chápeš, ale já si nejsem jistej že chápu tebe. ;) Nejsem si jistý jak udělat tu funkční třídu a data pro správu jako property entity? Vlastně si nejsem jistej ani slovem entita. :)

pilec napsal(a):

Pokud tě správně chápu, tak bych šel cestou kompozice, že data potřebná pro pohyb ve stromě + třída co se o strom stará bude vlastně property té entity, která má ve stromě být.

jtousek
Člen | 951
+
0
-

Jestli to má být abstraktní vrstva tak bych to napsal jako knihovnu a dal to do adresáře libs. Ve svém modelu potom budeš tuto knihovnu nějakým způsobem používat. Doufám že jsem pochopil správně na co ses ptal. :-D

Jan Endel
Člen | 1016
+
0
-

Nástřel:

class FooEntity {
	private $id;
	private $tree;
	private $name;

	//getry, setry a podobný binec
	//...
}

class Tree {
	private $ancestror;
	private $descendant;

	public function insert(){}
	public function move(){}
	public function delete(){}
	//... a tak dale
}

class Foo {
	public function doSomething()
	{
		$entity = new FooEntity;
		$entity->tree->move();
		//...
	}
}
Hafran
Člen | 121
+
0
-

Pilec: dík, tak sem tě pochopil dobře. ;) Mohl bys mě prosím odkázat na nějakej článek/knihu nebo vysvětlit co by v té entitě být mělo a nemělo na úkor té funkční třídy a Modelu a proč?

Jedinej článek o entitách a rozdělení modelu jsem našel zde: http://www.phpguru.cz/…rstev-modelu ale to mi nepříjde úplně srozumitelně vysvětlené :/

Filip Procházka
Moderator | 4668
+
0
-

Co tohle a tohle?