Crear y Ejecutar un Proyecto CakePHP
¿Qué es CakePHP?
CakePHP es un framework web de PHP de código abierto diseñado para ayudar a los desarrolladores a construir aplicaciones web rápidamente. Está basado en la arquitectura MVC (Modelo-Vista-Controlador) y proporciona un conjunto poderoso de herramientas que simplifican tareas de desarrollo comunes como la interacción con bases de datos, manejo de formularios, autenticación y gestión de sesiones.
Características Principales y Ventajas de CakePHP
- Desarrollo Rápido: Ofrece herramientas ricas en generación de código que ayudan a los desarrolladores a generar rápidamente estructuras de código comunes.
- ORM Flexible y Poderoso: La capa ORM (Mapeo Objeto-Relacional) incorporada simplifica las operaciones con bases de datos.
- Seguridad: Características de seguridad incorporadas como validación de entrada, protección CSRF y prevención de inyección SQL.
- Soporte Comunitario: Comunidad activa y un rico ecosistema de plugins.
- Buena Documentación: Proporciona documentación extensiva y tutoriales para ayudar a los desarrolladores a empezar rápidamente.
CakePHP es adecuado para proyectos que van desde pequeñas aplicaciones hasta grandes sistemas empresariales, ayudando a los desarrolladores a construir rápidamente aplicaciones web de alta calidad.
Crear y Ejecutar un Proyecto CakePHP Usando ServBay
En este artículo, utilizaremos el entorno PHP proporcionado por ServBay para crear y ejecutar un proyecto CakePHP. Utilizaremos la característica "Host" de ServBay para configurar un servidor web y configurar el proyecto para su acceso con configuraciones sencillas.
Nota: Si Ha Utilizado NGINX o Apache Antes
ServBay usa Caddy como el servidor web por defecto. Hay algunos cambios clave a tener en cuenta para los usuarios que migran de NGINX y Apache a ServBay:
Configuración de Caddy
ServBay viene con Caddy preinstalado y preconfigurado. Los desarrolladores solo necesitan gestionar los sitios a través de la característica "Host" de ServBay sin editar manualmente el archivo de configuración de Caddy.
Reglas de Reescritura y .htaccess
En NGINX y Apache, los desarrolladores típicamente escriben sus propias reglas de reescritura y archivos .htaccess para manejar la reescritura de URLs y otras configuraciones. Sin embargo, ServBay ya proporciona reglas optimizadas de Caddy de manera predeterminada, por lo que los desarrolladores no necesitan escribir estas reglas a menos que haya requisitos especiales.
Más Información
Para más información, consulte Rewrite and htaccess, How to Migrate Apache Site to ServBay y How to Migrate NGINX Site to ServBay.
Crear un Proyecto CakePHP
TIP
ServBay recomienda que los desarrolladores coloquen sus sitios web en el directorio /Applications/ServBay/www
para una gestión más fácil.
Instalar Composer
ServBay viene con Composer preinstalado, por lo que no se requiere una instalación por separado.
Crear un Proyecto CakePHP
Use 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 al Directorio del Proyecto
Navegue al directorio del proyecto CakePHP recién creado:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
Configuración Inicial
Configurar Variables de Entorno
Configure la información de conexión de la base de datos y otras variables de entorno en el archivo
config/app_local.php
. Asegúrese 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
Configurar el Servidor Web
Use la característica "Host" de ServBay para acceder al proyecto CakePHP a través del servidor web. En la configuración del Host de ServBay, agregue un nuevo host:
- Nombre:
My First CakePHP Dev Site
- Dominio:
servbay-cakephp-test.local
- Tipo de Sitio Web:
PHP
- Versión de PHP: Seleccione
8.3
- Directorio Raíz del Sitio Web:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Para pasos de configuración detallados, consulte Adding Your First Website.
Agregar Código de Ejemplo
Agregue el siguiente código al archivo config/routes.php
para mostrar "Hello ServBay!":
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
Agregue el siguiente código al 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
Abra un navegador y visite https://servbay-cakephp-test.local
para ver la página que muestra Hello ServBay!
.
Ejemplo con Bases de Datos NoSQL
Ejemplo de Memcached
Instalar la Extensión Memcached
La extensión Memcached ya está preinstalada en ServBay, por lo que no se requiere una instalación adicional.
Configurar Memcached
Configure 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
Agregue el siguiente código al archivo
config/routes.php
:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Usar Memcached
Use el 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
17Abra un navegador y visite
https://servbay-cakephp-test.local/memcached
Ejemplo de Redis
Instalar la Extensión Redis
La extensión Redis ya está preinstalada en ServBay, por lo que no se requiere una instalación adicional.
Configurar Redis
Configure 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
Agregue el siguiente código al archivo
config/routes.php
:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Usar Redis
Use el 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
17Abra un navegador y visite
https://servbay-cakephp-test.local/redis
Ejemplo de Base de Datos Relacional
Crear Esquema de Base de Datos y Archivos de Migración
Crear Archivos de Migración
Use la herramienta Bake de CakePHP para crear archivos de migración:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Ejecutar Migración
Use los comandos de CakePHP para ejecutar migraciones y crear tablas en la base de datos:
bashbin/cake migrations migrate
1
Ejemplo con MySQL
Configurar MySQL
Configure 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
Agregue el siguiente código al archivo
config/routes.php
:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2Agregar Tabla de Usuarios
Agregue el siguiente código al 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
8Agregar Datos de Usuario
Agregue los datos de 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
25Abra un navegador y visite
https://servbay-cakephp-test.local/mysql-add
yhttps://servbay-cakephp-test.local/mysql
Ejemplo con PostgreSQL
Configurar PostgreSQL
Configure 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
Agregue el siguiente código al archivo
config/routes.php
:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2Agregar Tabla de Usuarios
Agregue el siguiente código al 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
8Agregar Datos de Usuario
Agregue los datos de 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
25Abra un navegador y visite
https://servbay-cakephp-test.local/pgsql-add
yhttps://servbay-cakephp-test.local/pgsql
A través de los pasos anteriores, ha creado y ejecutado con éxito un proyecto CakePHP, utilizando las características de ServBay para gestionar y acceder a su proyecto, y conectando y consultando varias bases de datos.