Crear y ejecutar un proyecto de CakePHP
¿Qué es CakePHP?
CakePHP es un framework web PHP de código abierto, diseñado para ayudar a los desarrolladores a construir aplicaciones web rápidamente. Se basa en la arquitectura MVC (Modelo-Vista-Controlador) y ofrece un conjunto robusto de herramientas que simplifican tareas comunes en el desarrollo como la interacción con bases de datos, procesamiento de formularios, autenticación y gestión de sesiones.
Principales características y ventajas de CakePHP
- Desarrollo rápido: Proporciona herramientas ricas para la generación de código, ayudando a los desarrolladores a generar rápidamente estructuras de código comunes.
- ORM flexible y potente: La capa ORM (Mapeo de Objetos-Relacional) incluida simplifica las operaciones con bases de datos.
- Seguridad: Tiene múltiples características de seguridad incorporadas, como validación de entradas, protección CSRF y prevención de inyecciones SQL.
- Soporte comunitario: Cuenta con una comunidad activa y un ecosistema rico de plugins.
- Buena documentación: Proporciona documentación detallada y tutoriales para ayudar a los desarrolladores a comenzar rápidamente.
CakePHP es adecuado para proyectos de todo tipo, desde pequeñas aplicaciones hasta sistemas empresariales grandes, ayudando a los desarrolladores a construir aplicaciones web de alta calidad de manera rápida.
Crear y ejecutar un proyecto de CakePHP utilizando ServBay
En este artículo, utilizaremos el entorno PHP proporcionado por ServBay para crear y ejecutar un proyecto de CakePHP. Utilizaremos la función 'Host' de ServBay para configurar el servidor web y acceder al proyecto con configuraciones simples.
Atención: si has sido usuario de NGINX o Apache
ServBay utiliza por defecto Caddy como servidor web. Para los usuarios que migran de NGINX y Apache a ServBay, hay algunos cambios clave a tener en cuenta:
Configuración de Caddy
ServBay ya tiene Caddy incorporado con una configuración optimizada y depurada. Los desarrolladores solo necesitan usar la función 'Host' de ServBay para gestionar los sitios, sin la necesidad de modificar manualmente los archivos de configuración de Caddy.
Reglas de reescritura y .htaccess
En NGINX y Apache, los desarrolladores suelen escribir sus propias reglas de reescritura y archivos .htaccess para manejar la reescritura de URLs y otras configuraciones. Sin embargo, ServBay ya viene configurado con las reglas de Caddy, por lo que a menos que se tenga una necesidad especial, los desarrolladores no necesitan escribir estas reglas por sí mismos.
Más información
Para más información, consulta Rewrite and htaccess, Cómo migrar un sitio Apache a ServBay, Cómo migrar un sitio NGINX a ServBay.
Crear proyecto de CakePHP
TIP
ServBay recomienda ubicar los sitios web en el directorio /Applications/ServBay/www
para una gestión más fácil.
Instalar Composer
ServBay ya incluye Composer preinstalado, no es necesario instalarlo por separado.
Crear proyecto CakePHP
Usar Composer para crear un nuevo proyecto CakePHP:
bashcd /Applications/ServBay/www mkdir servbay-cakephp-app cd servbay-cakephp-app composer create-project --prefer-dist cakephp/app .
1
2
3
4Entrar en el directorio del proyecto
Entrar en el directorio del nuevo proyecto CakePHP:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
Configuración inicial
Configurar variables de entorno
Configurar la información de conexión a la base de datos y otras variables de entorno en el archivo
config/app_local.php
. Asegúrate de que las siguientes configuraciones están correctamente establecidas:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
Configuración del servidor web
Usar la función 'Host' de ServBay para acceder al proyecto CakePHP a través del servidor web. En la configuración de 'Host' de ServBay, añade un nuevo host:
- Nombre:
My First CakePHP Dev Site
- Dominio:
servbay-cakephp-test.local
- Tipo de sitio web:
PHP
- Versión de PHP: selecciona
8.3
- Directorio raíz del sitio web:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Para más detalles, consulta Añadir el primer sitio web.
Añadir código de ejemplo
Añadir el siguiente código en el archivo config/routes.php
para mostrar "Hello ServBay!":
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
Añadir el siguiente código en el archivo src/Controller/PagesController.php
:
namespace App\Controller;
use Cake\Http\Response;
class PagesController extends AppController
{
public function display()
{
return new Response(['body' => 'Hello ServBay!']);
}
}
2
3
4
5
6
7
8
9
10
11
Acceder al sitio web
Abre el navegador y accede a https://servbay-cakephp-test.local
, verás la página que muestra Hello ServBay!
.
Ejemplo de base de datos NoSQL
Ejemplo de Memcached
Instalar la extensión de Memcached
En ServBay, la extensión de Memcached ya está preinstalada, no es necesario instalarla adicionales.
Configurar Memcached
Configurar la información de conexión de Memcached en el archivo
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\MemcachedEngine', 'servers' => ['127.0.0.1'], ], ],
1
2
3
4
5
6Configurar rutas
Añadir el siguiente código en el archivo
config/routes.php
:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Usar Memcached
Utilizar caché en el controlador:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function memcached() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Memcached!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Abre el navegador y accede a
https://servbay-cakephp-test.local/memcached
Ejemplo de Redis
Instalar la extensión de Redis
En ServBay, la extensión de Redis ya está preinstalada, no es necesario instalar adicionales.
Configurar Redis
Configurar la información de conexión de Redis en el archivo
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\RedisEngine', 'server' => '127.0.0.1', 'port' => 6379, ], ],
1
2
3
4
5
6
7Configurar rutas
Añadir el siguiente código en el archivo
config/routes.php
:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Usar Redis
Utilizar caché en el controlador:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function redis() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Redis!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Abre el navegador y accede a
https://servbay-cakephp-test.local/redis
Ejemplo de base de datos relacional
Crear estructura de base de datos y archivos de migración
Crear archivo de migración
Utilizar la herramienta Bake de CakePHP para crear el archivo de migración:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Ejecutar migración
Utilizar el comando de CakePHP para ejecutar la migración y crear la tabla en la base de datos:
bashbin/cake migrations migrate
1
Ejemplo de MySQL
Configurar MySQL
Configurar la información de conexión de MySQL en el archivo
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9Configurar rutas
Añadir el siguiente código en el archivo
config/routes.php
:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2Añadir tabla de usuarios
Guarda el siguiente código en el archivo
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Escribir datos del usuario
Escribir datos del usuario en el controlador:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function mysqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function mysql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($users)]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Abre el navegador y accede a
https://servbay-cakephp-test.local/mysql-add
yhttps://servbay-cakephp-test.local/mysql
Ejemplo de PostgreSQL
Configurar PostgreSQL
Configurar la información de conexión de PostgreSQL en el archivo
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'driver' => Postgres::Class, 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
10Configurar rutas
Añadir el siguiente código en el archivo
config/routes.php
:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2Añadir tabla de usuarios
Guarda el siguiente código en el archivo
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Escribir datos del usuario
Escribir datos del usuario en el controlador:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function pgsqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function pgsql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($users)]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Abre el navegador y accede a
https://servbay-cakephp-test.local/pgsql-add
yhttps://servbay-cakephp-test.local/pgsql
Siguiendo estos pasos, habrás creado y ejecutado con éxito un proyecto de CakePHP utilizando las funciones proporcionadas por ServBay para gestionar y acceder a tu proyecto, además de conectar y utilizar múltiples bases de datos.