Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wprowadzenie DoctrineORM do pradawnego systemu
szczrzcz
post 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
Go to the top of the page
+Quote Post
kayman
post 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 smile.gif

btw. jeżeli to shop to bym się zastanowił czy się go nie da przenieść na jakie magento presta etc
Go to the top of the page
+Quote Post
szczrzcz
post 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.
Go to the top of the page
+Quote Post
kayman
post 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 smile.gif
Go to the top of the page
+Quote Post
szczrzcz
post 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.
Go to the top of the page
+Quote Post
kayman
post 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 smile.gif

jeszcze te nowe modele odpowiadać temu co jest by nie przepisywać wszystkiego
Go to the top of the page
+Quote Post
Pyton_000
post 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
Go to the top of the page
+Quote Post
szczrzcz
post 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%)
-----


Cytat(Pyton_000 @ 19.06.2017, 20:12:54 ) *
Chociaż zastanów się czy aby na pewno chcesz doctrine

co sugerujesz? Używałem tylko Doctrine.
Go to the top of the page
+Quote Post
Pyton_000
post 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ć smile.gif

U mnie np. nie sprawdziło by się użycie dodatkowego ORM, a to co jest teraz działa na mysql_*
Go to the top of the page
+Quote Post
szczrzcz
post 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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 23:07