Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wprowadzenie DoctrineORM do pradawnego systemu
szczrzcz
post
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
 
Start new topic
Odpowiedzi (1 - 9)
kayman
post
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 (IMG:style_emoticons/default/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
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
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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
szczrzcz
post
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
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 (IMG:style_emoticons/default/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
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
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
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ć (IMG:style_emoticons/default/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
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 16:52