2009-11-17 12 views
5

Qualcuno può forse spiegare qui perché sulla terra CakePHP ha una convenzione di utilizzare nomi plurali per le tabelle db e controller e singolare per i modelli? Perché non usare sempre termini singolari o sempre plurali? Per me sembra confuso dover sempre pensare "ora uso il plurale o il singolare qui?" (O c'è un modo semplice per ricordare ??) E poi hai le tabelle di join che usano una combinazione di entrambi!Perché CakePHP utilizza diverse convenzioni di denominazione plurale/singolare?

Suppongo che ci sia una buona ragione da qualche parte, ma non l'ho mai incontrato.
(spero davvero che non è solo perché Ruby-on-Rails funziona in questo modo.)

Simon.

+2

Probabilmente è a causa del rubino sulle rotaie :) –

+1

Nessuna idea. Utilizziamo sempre i campi facoltativi 'name', 'table' e 'primaryKey' (vedi i documenti del modello) per nominare le cose come vogliamo. Capitalizziamo ciò che vogliamo, quando vogliamo, e lasciamo tutto singolare. Oltre a questo, però, mi piace davvero Cake. – nilamo

+0

Potrebbe anche essere dovuto al fatto che CakePHP è stato progettato da persone che usano PHP che è incoerente per definizione. –

risposta

10

CakePHP Conventions

convenzioni di CakePHP sono stati distillati di anni di esperienza di sviluppo web e le migliori pratiche. Mentre ti suggeriamo di usare queste convenzioni durante lo sviluppo con CakePHP, dovremmo ricordare che molti di questi principi sono facilmente superabili - qualcosa che è particolarmente utile quando si lavora con sistemi legacy.

Penso che l'idea sia di rendere più fluente leggere e pensare gli elementi nel modo giusto. Le tabelle del database sono sempre plurali, poiché contengono molti record. Il modello è singolare, perché dovresti pensare di trovare un singolo disco con esso. Un campo di selezione per model_id otterrà automaticamente le sue opzioni da $models, perché ne selezioni uno di molti.

$model = $this->Model->find('first'); // reads like English 
$model = $this->Models->find('first'); // slightly trips you up 

$models = $this->Model->find('all'); // works okay 
$models = $this->Models->find('all'); // more logical, but "this models" still trips 

Non è sempre perfetto, ma penso che sia una convenzione piuttosto bella una volta che ci si abitua. Posso vedere come possa essere confuso all'inizio però.

+2

concordato. il modello è un'astrazione per la tua modalità dati, e in inglese sono sempre singolari (non dici "qual è l'essenza delle auto"). Il controller gestisce più istanze dell'astrazione (le sillabe tutte). IMO è abbastanza coerente con il modo in cui facciamo le cose in inglese. –

4

c'è un modo semplice per ricordare?

Sì, per quanto riguarda le parti in cui la convenzione di denominazione conta (db/modello/controllore) ... Se non è il nome di un modello (es. User) o il nome di una chiave esterna (es. user_id), quindi è plurale. Tutto è fondamentalmente plurale a parte queste due cose.

Problemi correlati