2012-08-09 10 views
5

Soy relativamente nuevo en PHP. Comencé a aprender PHP, pero luego me encontré con CakePHP, que se supone debe acelerar el tiempo de desarrollo.¿Cómo funciona la convención de nomenclatura cakePHP?

Después de leer la documentación y el tutorial del blog, todavía no entiendo la convención de nomenclatura. Supongo que no lo sabré hasta que empiece a dar algunos ejemplos, pero para comenzar, ¿alguien puede explicarme cómo cakePHP asocia las tablas de la base de datos a la capa de controlador/modelo?

El siguiente código es un resumen del tutorial. Es un método de control que pasa la identificación de la publicación a la capa de visualización. La tabla de la base de datos se llama "publicaciones". $ this-> Post se refiere a la clase de modelo de Post, que se correlaciona con la forma plural de publicaciones en la base de datos.

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

OK Lo consigo. A continuación, en la documentación que se refiere a la siguiente correlación:

ReallyBigPerson y really_big_people

Así que parece que la correlación en realidad sigue la regla en la semántica inglés. ¿Significa esto que CakePHP tiene una lista de palabras en singular y plural ocultas en algún lugar desde el que funciona? Por ejemplo, ¿puedo usar la siguiente correlación sin romper el código?

Este y estos o hombre y los hombres o del pie y los pies o alces y alces o ganso y gansos

Por otra parte, si tengo tanto en forma singular y plural de las tablas de mi base de datos, ¿romperá el código o solo se asociará a la tabla de forma plural?

Lo encuentro desconcertante ... ¿Por qué no podían coincidir con la convención de nomenclatura como para con los prefijos?

Respuesta

17

Inflector

CakePHP utiliza su clase Inflector para determinar los plurales de las cosas.

Dado que las convenciones de denominación dictan que los nombres de los modelos son singulares y los nombres de las tablas están pluralizados, utiliza el inflector para aplicar las semánticas/reglas en inglés para determinar el plural.

Si necesita ayuda para entender la salida del Inflector, puede usar el CakePHP inflector website.

Ejemplos pluralización

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 

Comprobar el sitio Inflector para estar seguro.

Los nombres de tabla no estándar

pesar de que CakePHP ofrece un conjunto de reglas estándar para nombrar y convenciones, nada de esto está escrito en piedra.Si desea cambiar el nombre de la tabla que se utiliza para un determinado modelo, basta con especificar el nombre de la tabla en el modelo:

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

O, si usted quiere un modelo que no utiliza una tabla:

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

gracias, esta respuesta es sucinta y directa al punto +1 respondió. – chaser

Cuestiones relacionadas