• 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

VPS Starter Arubacloud
0 głosów
271 wizyt
pytanie zadane 14 marca 2019 w PHP przez sapero Gaduła (4,100 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 2019 przez Ehlert Ekspert (212,630 p.)
wybrane 17 marca 2019 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 2019 przez Ehlert Ekspert (212,630 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 2019 przez sapero Gaduła (4,100 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 2019 przez Assasz Nałogowiec (30,460 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 2019 przez sapero Gaduła (4,100 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 2019 przez Assasz Nałogowiec (30,460 p.)
edycja 16 marca 2019 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 2019 przez sapero Gaduła (4,100 p.)

Dzięki!

Podobne pytania

0 głosów
2 odpowiedzi 391 wizyt
pytanie zadane 6 marca 2019 w PHP przez bromba Nowicjusz (180 p.)
0 głosów
0 odpowiedzi 122 wizyt
pytanie zadane 30 lipca 2018 w PHP przez cca Nowicjusz (120 p.)
0 głosów
1 odpowiedź 168 wizyt
pytanie zadane 11 lipca 2018 w PHP przez suice Gaduła (3,960 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...