2012-08-09 21 views
5

Jestem stosunkowo nowy w PHP. Rozpocząłeś naukę PHP, ale potem spotkasz ciastkoPHP, które ma przyspieszyć czas rozwoju.Jak działa konwencja nazewnictwa CakePHP?

Po przeczytaniu dokumentacji i samouczka na blogu nadal nie rozumiem konwencji nazewnictwa. Sądzę, że nie będę wiedział, dopóki nie zacznę robić przykładów, ale żeby zacząć, może ktoś mógłby mi wyjaśnić, jak CakePHP kojarzy tabele bazy danych z warstwą kontrolera/modelu?

Poniższy kod jest abstraktem z samouczka. Jest to metoda kontrolera, która przekazuje identyfikator postu do warstwy widoku. Tabela bazy danych nazywa się "posty". $ this-> Post oznacza klasę modelu Post, która jest skorelowana z liczbą mnogą postów w bazie danych.

public function view($id = null) { 
    $this->Post->id = $id; 
    $this->set('post', $this->Post->read()); 
} 

OK Rozumiem. Następnie w dokumentacji odnosi się do następującej korelacji:

ReallyBigPerson i really_big_people

Więc wydaje się, że korelacja faktycznie następujące zasady w języku angielskim semantyki. Czy to oznacza, że ​​CakePHP ma listę słów w liczbie pojedynczej i mnogiej ukrytą gdzieś, z której działa? Na przykład czy mogę użyć poniższej korelacji bez rozbijania kodu?

To i te lub Man i mężczyźni lub stóp i stóp lub Moose i łoś lub gęsi i gęsi

Ponadto, jeśli mam zarówno liczby pojedynczej i mnogiej tabel w z mojej bazy danych, czy złamie kod, czy też połączy się z tabelą w liczbie mnogiej?

Po prostu jest to zaskakujące ... Dlaczego po prostu nie pasują do konwencji nazewnictwa, jak na przykład z przedrostkami?

Odpowiedz

17

Inflector

CakePHP używa Inflector klasy do określenia liczby mnogiej rzeczy.

Ponieważ konwencje nazewnicze nakazują, że nazwy modeli są w liczbie pojedynczej, a nazwy tabel są pluralizowane, używa się inflectora do zastosowania semantyki/reguł angielskich w celu określenia liczby mnogiej.

Jeśli potrzebujesz pomocy w zrozumieniu wyjścia Inflectora, możesz użyć CakePHP inflector website.

pluralizacji Przykłady

Model name: Post 
Table name: posts 

Model name: User 
Table name: users 

Model name: Sheep 
Table name: sheep 

Model name: News 
Table name: news 

Model name: Radius 
Table name: radii 

Sprawdź stronę Inflector aby się upewnić.

Niestandardowe Nazwy tabel

Podczas CakePHP oferuje standardowy zestaw reguł dla nazywania i konwencji, żadna z nich znajduje się w kamieniu.Jeśli chcesz zmienić nazwę tabeli używanej do konkretnego modelu, wystarczy podać nazwę tabeli w modelu:

class Thing extends AppModel { 
    public $useTable = 'somethings'; 
} 

Albo, jeśli chcesz model, który nie korzysta z tabeli:

class Post extends AppModel { 
    public $useTable = null; 
} 
+0

dziękuję, ta odpowiedź jest zwięzła i prosta do momentu odpowiedzi +1. – chaser

Powiązane problemy