2009-11-17 13 views
5

Czy ktoś może wytłumaczy, dlaczego na świecie CakePHP ma konwencję używania wielu nazw dla tabel i kontrolek db i pojedynczych dla modeli? Dlaczego nie zawsze używać pojedynczych terminów lub zawsze w liczbie mnogiej? Dla mnie wydaje się to mylące, aby zawsze myśleć "teraz czy używam tu liczby mnogiej czy pojedynczej?" (Czy istnieje łatwy sposób na zapamiętanie?) A potem masz tabele łączenia, które wykorzystują kombinację obu!Dlaczego CakePHP używa różnych konwencji nazewnictwa liczby mnogiej/pojedynczej?

Zakładam, że jest gdzieś dobry powód, ale po prostu go nie spotkałem.
(Mam nadzieję, że to nie tylko dlatego, że Ruby-on-Rails działa w ten sposób.)

Simon.

+2

To chyba JEST z powodu rubinu na szynach :) –

+1

Nie mam pojęcia. Zawsze używamy pól opcjonalnych "name", "table" i "primaryKey" (zobacz dokumentację modelu), aby nadać im nazwy. Używamy tego, czego chcemy, kiedy chcemy, i zostawiamy wszystko w liczbie pojedynczej. Poza tym jednak bardzo lubię Cake. – nilamo

+0

Może to być również spowodowane tym, że CakePHP został zaprojektowany przez ludzi używających PHP, który z definicji jest niespójny. –

Odpowiedz

10

CakePHP Conventions

konwencji CakePHP zostały destylowany z wieloletnim doświadczeniem tworzenie stron internetowych i najlepszych praktyk. Chociaż sugerujemy stosowanie tych konwencji podczas rozwijania z CakePHP, powinniśmy wspomnieć, że wiele z tych zasad można łatwo przesłonić - co jest szczególnie przydatne podczas pracy ze starszymi systemami.

Uważam, że chodzi o to, aby płynniej czytać i myśleć o elementach we właściwy sposób. Tabele bazy danych są zawsze w liczbie mnogiej, ponieważ zawierają wiele rekordów. Model jest pojedynczy, ponieważ powinieneś pomyśleć o znalezieniu z nim jednego rekordu. Pole wyboru dla model_id automatycznie otrzyma jego opcje od $models, ponieważ wybierasz jedną z wielu.

Nie zawsze jest to idealne rozwiązanie, ale uważam, że jest to całkiem fajna konwencja, gdy już się przyzwyczaicie. Na samym początku widzę, jak może to być mylące.

+2

Uzgodnione. model jest abstrakcją dla twojego trybu danych, a po angielsku są one zawsze pojedyncze (nie mówisz "jaka jest istota samochodów"). Sterownik obsługuje wiele wystąpień abstrakcji (wszystkie one wygrywają). IMO jest całkiem spójne z tym, jak robimy rzeczy po angielsku. –

4

Czy istnieje łatwy sposób na zapamiętanie?

Tak, w odniesieniu do części, w których nazewnictwo liczy (db/model/kontroler) ... Jeśli to nie jest nazwa modelu (tj. User) lub nazwę klucza obcego (tj. user_id), to jest liczba mnoga. Wszystko jest w zasadzie inne niż te dwie rzeczy.