Složky a Namespace Nette + Doctrine

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

Zdravím,
chtěl bych se prosím zeptat na následující.

Jak máte řazené jednotlivé třídy vrstev a jak řešeny namespace? (model, entity, repository, facade či případně další?). Osobně mě napdají 3 varianty:

a) Řazení dle vrstvy (typu třídy):

App/
	presenters/
		templates/
			.....
		UserPresenter.pho
	model/
		UserManager.php
		ItemManager.php
	repository/
		UserRepository.php
		ItemRepository.php
	facade/
		UserFacade.php
		ItemFacade.php
	entity/
		User.php
		Item.php

b) Řazení dle reálného objektu:

App/
	presenters/
		templates/
			.....
		UserPresenter.pho
	model/
		User/
			UserManager.php
			UserRepository.php
			UserFacade.php
			User.php
		Item/
			ItemManager.php
			ItemRepository.php
			ItemFacade.php
			Item.php

c) Stejné jako bod a), s tím rozdílem, že Repository, Facade a Entity jsou v modelu

App/
	presenters/
		templates/
			.....
		UserPresenter.pho
	model/
		UserManager.php
		ItemManager.php
		repository/
			UserRepository.php
			ItemRepository.php
		facade/
			UserFacade.php
			ItemFacade.php
		entity/
			User.php
			Item.php

Popřípadě jestli máte úplně jiný osvědčený způsob.

Díky moc

EDIT:
Ještě mě napadá tato varianta:

App/
	presenters/
		templates/
			.....
		UserPresenter.pho
	model/
		User.php
		UserManager.php
		UserRepository.php
		UserFacade.php
		Item.php
		ItemManager.php
		ItemFacade.php
		ItemRepository.php

Editoval Croc (31. 10. 2015 9:43)

Pavel Macháň
Člen | 282
+
0
-

Inspiraci můžeš nabrat zde: https://github.com/…ct-archivist

Croc
Člen | 270
+
0
-

Díky, kouknu na to.

Ještě bych měl dava dotazy. Nepatří úplně pod toto téma, ale nechci zakládat nové.

Mám entitu User a třídu UserFacade. U (zatím) čtyřech atributů potřebuji z různých míst zjišťovat, zda hodnota určitého atributu je již použita (zda je volná).

Zatím mám uvedený kód:

/**
     * Check if the attribute is used.
     *
     * @param $att_name
     * @param $att_value
     * @return bool
     */
    public function isAttAvailable($att_name, $att_value)
    {
        $user = $this->userRepository->findBy(array($att_name => $att_value));

        if (!$user)
            return TRUE;

        return FALSE;
    }

Moje dvě otázky zní:

  1. Co je lepší?
    1. uvedená metoda s tím, že na vstupu bude mít název a hodnotu hledaného atributu (vrátí FALSE pokud už v DB bude) – zde vidím nevýhodu toho, že bych musel mít na nějakém místě definované konstanty s názvem sloupce v DB
    2. na každý atribut metoda zvlášť (isNickAvailable($att_value) , isEmailAvailable($att_value) , atd…
  2. Kam tato metoda patří? Do entity User nebo do UserFacade? – osobně bych ji dal do entity

Díky moc :)

Editoval Croc (31. 10. 2015 16:34)

F.Vesely
Člen | 369
+
0
-

2. Entita by se mela starat pouze o sebe, zda je ona sama ve validnim stavu. Tohle patri do nejake service.