Wprowadzenie DoctrineORM do pradawnego systemu |
Wprowadzenie DoctrineORM do pradawnego systemu |
19.06.2017, 16:30:59
Post
#1
|
|
Grupa: Zarejestrowani Postów: 153 Pomógł: 0 Dołączył: 20.04.2017 Skąd: Warszawa Ostrzeżenie: (0%) |
Mam do czynienia w pracy z ze starym systemem bez namespace, bez testów, bez ORM.
Przykładowa klasa modelu wygląda jak repozytorium z bardzo nieładnym kodem (niżej). Czy wprowadzenie Doctrine Orm (encji i relacji) do starego systemu z 90 tabelami wiąże się z jakimiś niesłychanymi problemami? Na mój rozumek to upierdliwe, ale do zrobienia. Czy w czasie remontu (dodawania kolejnych encji i relacji) dotychczasowy system będzie działał bez problemu? Proszę o porady jakie problemy mnie czekają, jakieś wskazówki. (wiem że istniało narzędzie które na podstawie bazy danych generuje encje i relacje, które wystarczy nieco popoprawiać) poniżej jedna z klas "modelu", czyli 1000 linijek zapytań. http://bin.devsphp.pl/d5a96ea4f45fd6dd4abb...86aeec2612a.xml ps czy tak się kiedyś pisało klasy Modeli? modele to były metody z repozytoriami? Ten post edytował szczrzcz 19.06.2017, 17:29:47 |
|
|
19.06.2017, 17:51:21
Post
#2
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) |
jak to w takich sytuacjach bywa, środowisko testowe, kopia bazy 1:1 i jazda, niech się wywala co chce, robota głupia strasznie
btw. jeżeli to shop to bym się zastanowił czy się go nie da przenieść na jakie magento presta etc |
|
|
19.06.2017, 18:19:57
Post
#3
|
|
Grupa: Zarejestrowani Postów: 153 Pomógł: 0 Dołączył: 20.04.2017 Skąd: Warszawa Ostrzeżenie: (0%) |
ale rozumiem, że to w żaden sposób nie będzie kolidowało z istniejącym systemem jeśli encje Doctrine będę chciał używać do nowych funkcjonalności. Po prostu część systemu będzie se używać staroci a część nowych encji i wszystko będzie stało na jednej bazie danych na tych samych tabelach.
|
|
|
19.06.2017, 18:29:15
Post
#4
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) |
pracujesz na kopii 1:1 systemu i bazy np na subdomenie, oryginału nie ruszasz niech sobie pracuje dalej, jak doprowadzisz to do ładu podmieniasz oryginalny system (wcześniej i tak robisz backup bo można coś przeoczyć)
czasami szybciej wychodzi napisanie tego od początku |
|
|
19.06.2017, 18:37:39
Post
#5
|
|
Grupa: Zarejestrowani Postów: 153 Pomógł: 0 Dołączył: 20.04.2017 Skąd: Warszawa Ostrzeżenie: (0%) |
ale ty zakładasz, że będę wymieniał w systemie wszystko co ma związek z bazą danych. A ja chcę tylko obok istniejącego folderu Model utworzyć Entity. I encji używac tylko do nowych modułów. Ten system i tak jest zasyfiony, tu nie chodzi o piękny kod a o przyjemność kodowania w przyszłości.
|
|
|
19.06.2017, 18:46:36
Post
#6
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) |
tak zakładam bo w praktyce tak to przeważnie wychodzi
wydaje mi się że wprowadzenie orm tam gdzie nie ma orm wiąże się z przepisaniem modeli jeszcze te nowe modele odpowiadać temu co jest by nie przepisywać wszystkiego |
|
|
19.06.2017, 19:12:54
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Powiem Ci tak... My np. postanowiliśmy przebudować system możliwie w 100% na SF3 z pradawnego kodu. Obok stoi sobie SF i routing przekierowuje albo na stary kod albo na nowy.
Z Doctrine będzie o tyle problem że musisz wygenerować Encje. Da się to zrobić automatem przez commands ale nie zawsze w 100% działa. Np. problemy z Enum (doctrine nie wspiera). Także spokojnie możesz postawić obok Entity, zrobić wpięcie żeby móc się do doctrina wołać i jazda. Chociaż zastanów się czy aby na pewno chcesz doctrine |
|
|
20.06.2017, 07:56:35
Post
#8
|
|
Grupa: Zarejestrowani Postów: 153 Pomógł: 0 Dołączył: 20.04.2017 Skąd: Warszawa Ostrzeżenie: (0%) |
|
|
|
20.06.2017, 08:05:42
Post
#9
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Chodzi o to czy to nie będzie przerostu formy nad treścią. Bo może warto np. przemodelować i używać czystego PDO.
Aczkolwiek jeśli uważasz że to będzie spoko to rób z Doctrine. Nie znamy architektury projektu więc ciężko doradzić U mnie np. nie sprawdziło by się użycie dodatkowego ORM, a to co jest teraz działa na mysql_* |
|
|
25.06.2017, 14:58:10
Post
#10
|
|
Grupa: Zarejestrowani Postów: 153 Pomógł: 0 Dołączył: 20.04.2017 Skąd: Warszawa Ostrzeżenie: (0%) |
machnąłem komendę:
Kod doctrine orm:convert-mapping --from-database annotation /path/to/mapping-path-converted-to-yml i już, póki co problemów nie widzę. Wygenerował mi ładnie encje, musiałem tylko dodać namespaces do każdej. Teraz będę na bieżąco poprawiał te klasy jeśli będę się zajmował konkretną i wyskoczy jakiś błąd. Fakt, że baza jest zaprojektowana bez kluczy obcych w tym wypadku okazało się błogosławieństwem (bo ponoć "reverse enginering" z tym ma właśnie problemy) . Ładnie mi wykrył relacje ManyToOne |
|
|
Wersja Lo-Fi | Aktualny czas: 23.09.2024 - 22:26 |