• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

symfony4 - uniezależnienie się od frameworka

0 głosów
130 wizyt
pytanie zadane 14 marca w PHP, Symfony, Zend przez sapero Gaduła (3,660 p.)
Witam, czy znacie jakieś tutki lub hasła żeby można było zguglować tematy o uniezależnieniu się od frameworka/ów i pisanie skalowalnego kodu który można przenosić między frameworkami?

Jak wygląda ten temat w Symfony? np.  z doctrine, serwisami itd? nie chodzi mi o pisanie kodu opartego o zewnętrzne biblioteki bo te mogę pobrać do każdego frameworka php

 

Pozdrawiam

2 odpowiedzi

0 głosów
odpowiedź 15 marca przez Ehlert Mędrzec (165,080 p.)
wybrane 17 marca przez sapero
 
Najlepsza
  1. Architektura hexagonalna 
  2. Architektura portów i adapterów 
  3. Wykorzystywanie interfejsów na różnych warstwach architektury
  4. Configi w yamlach, czyli doctrine, validation i serializer
  5. Proxy pattern dla bibliotek
komentarz 15 marca przez Ehlert Mędrzec (165,080 p.)
Musisz pamiętać że wyżej wymienione rozwiązania mają swoje uzasadnione użycie w większych projektach. Jeśli robisz coś mniejszego to używanie tego będzie generować dużą ilość boilerplatu, no i rażąco zwiększy się czas developmentu.
komentarz 16 marca przez sapero Gaduła (3,660 p.)

@Ehlert, Dzięki! te hasła są w większości nieznane dla mnie, ale już googluje i szukam informacji:) co do punktu 4 tzn. config doctrine? to czy istnieje jakiś patent aby zrobić jakąś nakładkę na doctrine do zapytań sqlowych? chodzi mi o to że jeśli chcielibyśmy przenieść coś z syfony np do laravela to tam mamy inne ORM? Chciałbym na początku napisac coś małego ale już wdrążać te rzeczy o których piszesz tylko jest tego trochę:)) co bys mógł polecić na początek z rzeczy o których piszesz żeby stopniowo uczyć się pisać takie skalowalne aplikację możliwe do przenoszenia między frameworkami?

ps. podałeś 5 punktów nie wiem czy to przypadkowa kolejność czy nie:)

0 głosów
odpowiedź 15 marca przez Assasz Nałogowiec (29,010 p.)
Generalnie może być użyteczna implementacja warstwy antykorupcyjnej, tłumaczącej model zewnętrznych systemów na model zrozumiały dla twojej aplikacji - poprzez zastosowanie wzorca adapter i zasady odwrócenia zależności. W ten sposób możesz wyizolować cały core aplikacji od wszelkich frameworków, bibliotek, baz danych oraz zewnętrznych API.

Zatem szukałbym pod tymi hasłami: anti-corruption layer, adapter pattern, dependency inversion.
komentarz 16 marca przez sapero Gaduła (3,660 p.)
chodzi o to żeby moja aplikacja była napisana w czystym php a jedynie korzystała z dobrodziejstw frameworka w minimalny sposób?:)
komentarz 16 marca przez Assasz Nałogowiec (29,010 p.)
edycja 16 marca przez Assasz

Niekoniecznie w minimalny, lecz w oparciu o interfejsy.

Załóżmy, że chcesz, aby twoja aplikacja korzystała z Entity Managera od Doctrine:

interface EntityManagerInterface
{
    public function persist(): void;
}

// jakaś klasa twojej aplikacji, która posiada potrzebę skorzystania z EntityManagera
class AppService
{
    // wstrzykujesz Entity Managera - tutaj zachodzi odwrócenie zależności, ponieważ
    // klasa zamiast odwoływać się bezpośrednio do adaptera, odwołuje się do interfejsu
    // która twoja warstwa aplikacji zdefiniowała
    public function __construct(EntityManagerInterface $em)
    {
        //...
    }
}

// warstwa antykorupcyjna
class EntityManagerAdapter implements EntityManagerInterface
{
    private $em;

    public function __construct()
    {
        // tworzysz instancję EntityManagera, konfigurujesz ją etc.
    }

    public function persist(): void
    {
        // logika metody persist
    }
}

W ten sposób warstwa aplikacji nie wie, czy korzysta z Entity Managera od Doctrine, czy jakiegoś innego mechanizmu persystencji - nie obchodzi jej to tak długo, jak przestrzegany jest "kontrakt" (interfejs) zawarty między nią a dostawcą zależności. 

Dodam jeszcze, że bardzo podobna idea istnieje w architekturze heksagonalnej (znanej również jako architektura portów i adapterów), także jak napisał Ehlert, wykorzystanie takiej architektury również będzie dobrym pomysłem.

komentarz 17 marca przez sapero Gaduła (3,660 p.)

Dzięki!

Podobne pytania

0 głosów
2 odpowiedzi 86 wizyt
pytanie zadane 6 marca w PHP, Symfony, Zend przez bromba Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 62 wizyt
0 głosów
1 odpowiedź 73 wizyt
pytanie zadane 11 lipca 2018 w PHP, Symfony, Zend przez suice Gaduła (3,400 p.)
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

64,817 zapytań

111,275 odpowiedzi

234,016 komentarzy

46,696 pasjonatów

Przeglądających: 265
Pasjonatów: 9 Gości: 256

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...