CakePHP es un
framework que pretende facilitarnos la vida programando en php. Por poner un ejemplo, se ha terminado el hacer consultas a la base de datos...
Insisto en este artículo, que el propósito de este blog no es más que plasmar mis propias anotaciones sobre los sistemas que ensayo, aunque siendo conocedor que no voy a ser el único que se aproveche de ello, me gusta darle apariencia de tutorial y dirigirme a un posible público como 'profesor' simplemente como diversión y porque me gusta escribir.
Aclarado esto, una vez me he metido en harina en este sistema que estoy probando, me he dado cuenta que el tutorial es un absoluto desastre, por lo que lo voy a reescribir a mi manera.
Instalación
2.- Ahora crearemos una carpeta que llamaremos por ejemplo
/cake20 en la raíz de nuestro servidor web (ya sea un hosting en la red o un servidor web en nuestro PC como
EasyPHP)
3.- Copiamos o subimos al servidor los archivos descomprimidos en la carpeta que hemos creado anteriormente.
4.- Creamos una base de datos.
5.- Configuramos la base de datos en CakePHP.
Para ello nos dirigimos a la carpeta /app/Config y copiamos el fichero database.php.default y lo renombramos simplemente como database.php.
Editamos el fichero y configuramos la base de datos:
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'port' => '',
'login' => 'cakeBlog',
'password' => 'c4k3-rUl3Z',
'database' => 'cake_blog_tutorial',
'schema' => '',
'prefix' => '',
'encoding' => ''
);
6.- Configuramos la encriptación, más que nada porque si no
CakePHP se quejará.
Editamos el fichero
core.php que se encuentra en la carpeta
/app/Config.
Buscamos la línea
Configure::write('Security.salt', 'pl345e-P45s_7h3*S@l7!'); y cambiamos la parte que he marcado en fosforito por la cadena de caracteres que nos de la gana.
Así mismo buscamos Configure::write('Security.cipherSeed', '7485712659625147843639846751'); y cambiamos los números por otra numeració cualquiera.
Y con esto ya hemos acabado.
Como funciona CakePHP
Pues funciona sólo. De hecho, en el manual se habla varias veces de la magia de CakePHP y en ocasiones parece que sea así.
De hecho para saber lo que tiene que hacer CakePHP usa una serie de convenciones en la nomenclatura y la estructura de carpetas y lo veremos con un ejemplo: una lista de artículos (o lo que viene a ser un blog)
Así que lo primero que haremos será rellenar la base de datos con tres artículos para probar. Así que usando nuestro gestor de base de datos (p. ej. PhpMyAdmin) ejecutaremos los siguientes comandos:
/* tabla para nuestros artículos */
CREATE TABLE articulos (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50),
body TEXT,
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);
/* algunos valores de test */
INSERT INTO articulos (title,body,created)
VALUES ('El título', 'Esto es el cuerpo del artículo.', NOW());
INSERT INTO articulos (title,body,created)
VALUES ('Un título otra vez', 'Y sigue el cuerpo del artículo.', NOW());
INSERT INTO articulos (title,body,created)
VALUES ('El título vuelve', 'Esto es realmente excitante! No?', NOW());
Pues bien, aquí viene la primera convención. Fijaos que hemos llamado a la tabla
articulos en minúscula. Es más si hubiera sido nombre compuesto la hubiéramos llamado en minúscula y con un
underscore ( _ ) entre palabras.
Esta tabla podríamos considerar que es una entidad, un objeto o como llama
CakePHP, un
modelo.
Los modelos se nombran en mayúscula y en singular y se guardan en la carpeta
/app/model. En nuestro caso tendríamos un fichero llamado
Articulo.php en esa carpeta. En ese archivo tendremos la declaración del modelo y sus validaciones.
Sólo por usar esa nomenclatura,
CakePHP supondrá que en la carpeta
/app/Controller, tendremos un fichero llamado
ArticulosController.php. Como podemos imaginar, este tipo de objeto se llamará genéricamente
controlador y gestionará la lectura y escritura de los datos.
Finalmente necesitaremos un formato de salida en pantalla, un
template para entendernos. Sin embargo, no necesitaremos el mismo si mostramos una tabla para seleccionar un registro o el registro en sí, de lo que deduciremos que podremos tener varios. Estos archivos, que llamaremos
vistas, llevan extensión '*.ctp' y se alojan en la carpeta
/app/View/Nombre_controlador. En nuestro caso /app/View/Articulos/ (Artículos en plural). Los archivos con extensión '*.ctp' pueden tener cualquier nombre.
Con estas 4 cosas y unas pocas líneas de código, podemos desarrollar un mantenimiento
CRUD completo. Pero esto, ya lo iremos viendo...
La importancia de las convenciones
Como ya se ha apuntado si seguimos una rígida normativa, CakePHP hará muchas cosas por nosotros.
La normativa para los
modelos es que se escriben en singular y en
UpperCamelCase si son compuestas.
La normativa para las tablas de la base de datos es que se ecriben en plural y con underscores ( _ ) en lugar de espacios si son compuestas.
Esto significa que si tenemos un modelo llamado
Articulo,
CakePHP manejará automáticamente la tabla
articulos, y si tenemos un modelo llamado
ArticuloLargo,
CakePHP gestionará automáticamente la tabla
articulo_largos. (Sí, ya se que en la lengua de
Espronceda queda un poco raro, pero hay que hacer un esfuerzo)
Pero aún hay más! Si nuestra tabla tiene el campo
name o
title las usará como etiquetas en ciertas ocasiones (manda title sobre name) y si tenemos creados los campos
created o
modified se estamparán las fechas automáticamente! Y es más! (aunque yo no lo he conseguido) pero en principio si el campo
id es de tipo
int, se rumorea que
CakePHP lo gestiona también y si es de tipo char(36) gestiona un identificador
UUID)
Y eso es todo por ahora... hasta la próxima.