Hardcoded thoughts… mostly in C# or php

Problemy z przejściem na CakePHP v1

Przy aktualizacji oprogramowania nie nawykłem do czytania changelogów, co dziś sprawiło trochę problemów. Nową wersję CakePHP oczywiście ściągnąłem i od razu przystąpiłem do aktualizacji.

Zwykle wystarczyło przekopiować sam katalog cake przy jednoczesnym nadpisaniu plików. Tym razem należy jeszcze zwrócić uwagę na app/config/inflections.php, który również należy przekopiować z archiwum do odpowiadającego katalogu. Brzydko.

Przejechałem się dziś w jeszcze jednym miejscu. Do tej pory, gdy wyszukiwało się jakiś rekordów ($this->model->findAll()), do tablicy przechowującej je lądowały wszystkie rekordy spełniające warunek, wraz ze wszystkimi spełnionymi, niepustymi zależnościami (gdy wyszukujemy np. newsów, Cake automatycznie zwraca również odpowiadające im komentarze). Jeśli zależności nie było, nic nie było zwracane. Czyli przykładowo:

CODE:
  1. array(2) {
  2. [0]=>
  3. array(1) {
  4. ["News"]=>
  5. array(2) {
  6. ["id"]=>
  7. string(1) "1"
  8. ["title"]=>
  9. string(6) "News 1"
  10. }
  11. }
  12. [1]=>
  13. array(2) {
  14. ["News"]=>
  15. array(2) {
  16. ["id"]=>
  17. string(1) "2"
  18. ["title"]=>
  19. string(7) "eSurvey"
  20. }
  21. ["Comment"]=>
  22. array(1) {
  23. [0]=>
  24. array(3) {
  25. ["id"]=>
  26. string(1) "2"
  27. ["news_id"]=>
  28. string(1) "2"
  29. ["body"]=>
  30. string(9) "komentarz"
  31. }
  32. }
  33. }
  34. }

Teraz Cake zwraca wszystkie tablice zależne, nawet jeśli są puste:

CODE:
  1. array(2) {
  2. [0]=>
  3. array(2) {
  4. ["News"]=>
  5. array(2) {
  6. ["id"]=>
  7. string(1) "1"
  8. ["title"]=>
  9. string(6) "News 1"
  10. }
  11. ["Comment"]=>
  12. array(0) {
  13. }
  14. }
  15. [1]=>
  16. array(2) {
  17. ["News"]=>
  18. array(2) {
  19. ["id"]=>
  20. string(1) "2"
  21. ["title"]=>
  22. string(7) "eSurvey"
  23. }
  24. ["Comment"]=>
  25. array(1) {
  26. [0]=>
  27. array(3) {
  28. ["id"]=>
  29. string(1) "2"
  30. ["news_id"]=>
  31. string(1) "2"
  32. ["body"]=>
  33. string(9) "komentarz"
  34. }
  35. }
  36. }
  37. }

(Zwrócić nalezy uwagę na newsa pierwszego i komentarz do tegoż...)
Co jest dość istotne, bo przy sprawdzaniu zależności warto sprawdzić, z jakiej funkcji sprawdzającej „obecność� korzystamy – isset() się tu już zdecydowanie nie sprawdzi.

Na razie tyle zauważonych ważniejszych różnić i niedogodności. Mam nadzieję, że kolejnych nie będzie…

No comments yet. Be the first.

Leave a reply