Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF2][Symfony2][Symfony]symfony nadpisanie klasy wewnątrz biblioteki swoim service
Forum PHP.pl > Forum > PHP > Frameworki
symer
Jak nadpisać jakąś klasę wewnątrz biblioteki questionmark.gif wiem, że można ją edytować ale nie o to mi chodzi. Tworzę jakąś usługę w moim bundle i po prostu nadpisuje jakąś wybraną klasę wewnątrz biblioteki np. FosUser. Chcę nadpisać vendor\friendsofsymfony\user-bundle\Form\Type\RegistrationFormType. swoją klasą , którą posiadam w swoim Bundle jako service
Pyton_000
Jeśli faktycznie używasz FOSUserBundle to wywal go i napisz po swojemu. Zajmie Ci to tyle samo czasu co nadpisywanie tego.
symer
To jest przykład, że Chcę nadpisać tą klasę w FosUserBundle. Pytanie dotyczy jak nadpisać jakąś klasę wewnątrz biblioteki używając własnej service
Pyton_000
Jeśli jest to typowy bundle do SF to może to: https://symfony.com/doc/3.3/bundles/inheritance.html

symer
Można to zrobić inaczej? Z tego co widzę, to tutaj mogę jedynie z jednego bundle coś podmienić, z którego dostaje getParent. A jak to zrobić jak Chcę pozmieniać w paru bundle ?
ohm
Co do fosuser to masz w dokumentacji wszystko https://symfony.com/doc/current/bundles/FOS...ding_forms.html
Pilsener
Nie nadpisuje się, bo to bardzo zła praktyka.
Jeśli jakaś biblioteka nam nie pasuje to:
- szukamy innej
- forkujemy ją
- tworzymy do niej adapter
- piszemy własny kod
- i/lub korzystamy z całego spektrum innych możliwości

Niekiedy twórcy biblioteki przewidują taką możliwość, np:
https://symfony.com/doc/current/bundles/FOS...ding_forms.html

Jednak to tworzy więcej problemów, niż rozwiązuje, za kilka miesięcy nikt się nie połapie w tym.
symer
Rozumiem o co Tobie biega i masz racje. No ale Ja nie Chcę jej całkowicie nadpisać. Tylko dodać możliwości . Oto mi chodzi. Bez ruszania jakichkolwiek czynności
Pilsener
Cytat
Tylko dodać możliwości

No to nie ma potrzeby nadpisywania.
Tworzysz po prostu własny serwis, gdzie używasz tej biblioteki.
Przykład: masz bibliotekę Guzzle do obsługi API, ale nie ma tam metody pobierającej listę pacjentów z NFZ - robisz więc serwis, który używa Guzzle do pobrania tych danych:

  1. return $this->guzzle->get('nfz.com/listaPacjentow');


Można oczywiście Guzzle nadpisać, ale biblioteki, serwisy, klasy pisze się po to, aby były wyspecjalizowane - jak coś jest do wszystkiego, to jest do niczego.
Pyton_000
A możesz powiedzieć co chcesz zrobić? Bo coś mi się wydaje że próbujesz wywarzyć otwarte drzwi i próbować z komina zrobić bramę garażową dla reniferów św. Mikołaja.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.