2012-08-09 11 views
5

Ich bin relativ neu in PHP. Erlernte PHP, stieß aber auf cakePHP, was die Entwicklungszeit beschleunigen sollte.Wie funktioniert die CakePHP-Namenskonvention?

Nach dem Lesen der Dokumentation und Blog-Tutorial verstehe ich immer noch nicht die Namenskonvention. Ich denke, ich werde es nicht wissen, bis ich anfange, einige Beispiele zu machen, aber um mich dazu zu bringen, kann mir bitte jemand erklären, wie cakePHP Datenbanktabellen dem Controller/Model-Layer zuordnen?

Der folgende Code ist ein Auszug aus dem Tutorial. Es ist eine Controller-Methode, die die Post-ID an den View-Layer übergibt. Die Datenbanktabelle heißt "Posts". $ this-> Post bezieht sich auf die Modellklasse von Post, die mit der Pluralform von Posts in der Datenbank korreliert.

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

OK, ich verstehe. Dann wird in der Dokumentation bezieht er sich auf die folgende Korrelation:

ReallyBigPerson und really_big_people

So scheint es, wie die Korrelation tatsächlich die Regel in Englisch Semantik folgt. Bedeutet dies, dass cakePHP eine Liste von Singular- und Plural-Wörtern enthält, die irgendwo versteckt sind, von denen es funktioniert? Kann ich zum Beispiel die folgende Korrelation verwenden, ohne den Code zu unterbrechen?

Dieser und dieser oder Mann und Männer oder Fuß und Füße oder Moose und oder Gans und Gänse

Außerdem Elch, wenn ich sowohl Singular und Plural Form von Tabellen in meine Datenbank, wird es den Code brechen, oder wird es nur mit der plural geformten Tabelle assoziieren?

Finden Sie es nur verwirrend ... Warum konnten sie nicht einfach die Namenskonvention wie für wie mit Präfixen übereinstimmen?

Antwort

17

Beugung

CakePHP verwendet seine Inflector Klasse die Plurale der Dinge zu bestimmen.

Da die Namenskonventionen vorschreiben, dass Modellnamen singulär sind und Tabellennamen pluraliert sind, verwendet sie den Inflector, um englische Semantik/Regeln anzuwenden, um den Plural zu bestimmen.

Wenn Sie Hilfe benötigen, um die Ausgabe des Inflectors zu verstehen, können Sie die CakePHP inflector website verwenden.

Pluralisierung Beispiele

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 

Überprüfen der Inflector Ort sicher sein.

Nicht-Standard-Tabellennamen

Während CakePHP einen Standard-Regelsatz für die Benennung und Konventionen bietet, nichts davon ist in Stein gemeißelt.Wenn Sie den Namen der Tabelle für ein bestimmtes Modell ändern möchten, geben Sie einfach den Tabellennamen im Modell:

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

Oder, wenn Sie ein Modell, das nicht das Tabelle nicht verwenden:

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

danke, diese Antwort ist prägnant und direkt auf den Punkt +1 geantwortet. – chaser