• 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
125 wizyt
pytanie zadane 14 marca w PHP, Symfony, Zend przez sapero Gaduła (3,570 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 (162,040 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 (162,040 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,570 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 (28,430 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,570 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 (28,430 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,570 p.)

Dzięki!

Podobne pytania

0 głosów
2 odpowiedzi 78 wizyt
pytanie zadane 6 marca w PHP, Symfony, Zend przez bromba Nowicjusz (140 p.)
0 głosów
0 odpowiedzi 59 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
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

63,145 zapytań

109,390 odpowiedzi

228,534 komentarzy

42,577 pasjonatów

Przeglądających: 189
Pasjonatów: 8 Gości: 181

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.

...