Crear y ejecutar un proyecto Yii 2
¿Qué es Yii 2?
Yii 2 es un framework PHP de alto rendimiento, adecuado para desarrollar aplicaciones web modernas. Sigue el patrón de diseño MVC (Modelo-Vista-Controlador), proporcionando un conjunto completo de características y herramientas ricas que permiten a los desarrolladores construir aplicaciones web de alta calidad rápidamente. Yii 2 es eficiente, flexible, escalable y es una elección preferida para muchos desarrolladores.
Principales características y ventajas de Yii 2
- Alto rendimiento: Yii 2 es un framework de alto rendimiento, capaz de manejar solicitudes concurrentes.
- Modularidad: Proporciona módulos y complementos ricos, facilitando la extensión y personalización de funciones.
- Seguridad: Incluye funciones de seguridad integradas como validación de entradas, filtrado de salidas, protección CSRF, etc.
- Facilidad de uso: Ofrece API sencillas y documentación rica, permitiendo a los desarrolladores empezar rápidamente.
- Fuerte soporte comunitario: Cuenta con una comunidad activa de desarrolladores y extensiones de terceros ricas.
Yii 2 puede ayudar a los desarrolladores a construir rápidamente aplicaciones web de alto rendimiento y alta calidad, adecuadas para proyectos de cualquier escala.
Crear y ejecutar un proyecto Yii 2 usando ServBay
En este artículo, utilizaremos el entorno PHP proporcionado por ServBay para crear y ejecutar un proyecto Yii 2. Utilizaremos la función 'host' de ServBay para configurar el servidor web y acceder al proyecto mediante una configuración simple.
Nota: Si has sido usuario de NGINX o Apache previamente
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 incorpora Caddy y la configuración predeterminada ya está optimizada y depurada. Los desarrolladores solo necesitan gestionar el sitio mediante la función 'host' de ServBay, sin necesidad de modificar el archivo de configuración de Caddy manualmente.
Reglas de Reescritura y .htaccess
En NGINX y Apache, los desarrolladores suelen escribir reglas de reescritura y archivos .htaccess por su cuenta para manejar la reescritura de URL y otras configuraciones. Sin embargo, ServBay ya configura las reglas de Caddy de fábrica, por lo que, a menos que haya necesidades especiales, los desarrolladores no tienen que escribir estas reglas por sí mismos.
Más información
Para obtener más información, consulte Rewrite y htaccess, Cómo migrar un sitio Apache a ServBay, Cómo migrar un sitio NGINX a ServBay.
Crear un proyecto Yii 2
TIP
ServBay sugiere a los desarrolladores colocar el sitio web en el directorio /Applications/ServBay/www
para facilitar la gestión.
Instalar Composer
Composer ya viene preinstalado en ServBay, por lo que no es necesario instalarlo por separado.
Crear un proyecto Yii 2
Utiliza Composer para crear un nuevo proyecto de plantilla de aplicación básica de Yii 2:
bashcd /Applications/ServBay/www mkdir servbay-yii2-app cd servbay-yii2-app composer create-project --prefer-dist yiisoft/yii2-app-basic .
1
2
3
4Entrar en el directorio del proyecto
Accede al directorio del nuevo proyecto Yii 2:
bashcd /Applications/ServBay/www/servbay-yii2-app
1
Configuración inicial
Configurar la conexión a la base de datos
Configura la información de conexión a la base de datos en el archivo
config/db.php
:phpreturn [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0.1;dbname=servbay_yii2_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ];
1
2
3
4
5
6
7Configurar caché y componente Redis
Añade la configuración del caché y el componente Redis en el archivo
config/web.php
:php'components' => [ 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, ], ], ], 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '127.0.0.1', 'port' => 6379, 'database' => 0, ], // ... ],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Configurar el servidor web
Usa la función 'host' de ServBay para acceder al proyecto Yii 2 a través del servidor web. En la configuración de "host" de ServBay, añade un nuevo host:
- Nombre:
My First Yii 2 Dev Site
- Dominio:
servbay-yii2-test.local
- Tipo de sitio web:
PHP
- Versión de PHP:
8.3
- Directorio raíz del sitio web:
/Applications/ServBay/www/servbay-yii2-app/web
Para obtener instrucciones detalladas sobre la configuración, consulta Agregar el primer sitio web.
Añadir código de ejemplo
Agrega el siguiente código al archivo controllers/SiteController.php
:
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\web\Response;
class SiteController extends Controller
{
public function actionIndex()
{
return $this->render('index');
}
public function actionMemcached()
{
$cache = Yii::$app->cache;
$cache->set('key', 'Hello Memcached!', 60);
$value = $cache->get('key');
return $this->asText($value);
}
public function actionRedis()
{
$redis = Yii::$app->redis;
$redis->set('key', 'Hello Redis!');
$value = $redis->get('key');
return $this->asText($value);
}
public function actionMysqlAdd()
{
Yii::$app->db->createCommand()->insert('users', [
'name' => 'ServBay',
'email' => '[email protected]',
])->execute();
return $this->asText('User added');
}
public function actionMysql()
{
$users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll();
return $this->asJson($users);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Agrega el siguiente código en el archivo views/site/index.php
:
<?php
/* @var $this yii\web\View */
$this->title = 'My Yii2 Application';
?>
<div class="site-index">
<div class="jumbotron">
<h1>¡Felicidades!</h1>
<p class="lead">Has creado con éxito tu aplicación Yii2.</p>
</div>
</div>
2
3
4
5
6
7
8
9
10
Acceder al sitio web
Abre el navegador y visita la siguiente URL:
https://servbay-yii2-test.local
: Verás la página de bienvenida predeterminada de Yii 2.
Ejemplos de base de datos NoSQL
Ejemplo de Memcached
Instalar la extensión de Memcached
En ServBay, la extensión de Memcached ya está preinstalada, por lo que no es necesaria una instalación adicional.
Configurar Memcached
Configura la información de conexión de Memcached en el archivo
config/web.php
:php'components' => [ 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, ], ], ], // ... ],
1
2
3
4
5
6
7
8
9
10
11
12
13Usar Memcached
Usa Memcached en el controlador:
phppublic function actionMemcached() { $cache = Yii::$app->cache; $cache->set('key', 'Hello Memcached!', 60); $value = $cache->get('key'); return $this->asText($value); }
1
2
3
4
5
6
7
Ejemplo de Redis
Instalar la extensión de Redis
En ServBay, la extensión de Redis ya está preinstalada, por lo que no es necesaria una instalación adicional.
Configurar Redis
Configura la información de conexión de Redis en el archivo
config/web.php
:php'components' => [ 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '127.0.0.1', 'port' => 6379, 'database' => 0, ], // ... ],
1
2
3
4
5
6
7
8
9Usar Redis
Usa Redis en el controlador:
phppublic function actionRedis() { $redis = Yii::$app->redis; $redis->set('key', 'Hello Redis!'); $value = $redis->get('key'); return $this->asText($value); }
1
2
3
4
5
6
7
Ejemplo de base de datos relacional
Crear estructura de la base de datos y archivos de migración
Crear un archivo de migración
Usa la herramienta Gii de Yii 2 para crear un archivo de migración:
bashphp yii migrate/create create_users_table
1Editar el archivo de migración
Encuentra el nuevo archivo de migración creado en el directorio
migrations
y edítalo para definir la estructura de la tabla de la base de datos:phppublic function up() { $this->createTable('users', [ 'id' => $this->primaryKey(), 'name' => $this->string()->notNull(), 'email' => $this->string()->notNull()->unique(), 'created_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP'), 'updated_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), ]); }
1
2
3
4
5
6
7
8
9
10Ejecutar la migración
Usa el comando de migración de Yii 2 para ejecutar la migración y crear la tabla en la base de datos:
bashphp yii migrate
1
Ejemplo de MySQL
Configurar MySQL
Configura la información de conexión de MySQL en el archivo
config/db.php
:phpreturn [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0.1;dbname=servbay_yii2_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ];
1
2
3
4
5
6
7Escribir datos de usuarios
Escribe datos de usuarios en el controlador:
phppublic function actionMysqlAdd() { Yii::$app->db->createCommand()->insert('users', [ 'name' => 'ServBay', 'email' => '[email protected]', ])->execute(); return $this->asText('User added'); }
1
2
3
4
5
6
7
8Usar MySQL
Llama a la base de datos en el controlador:
phppublic function actionMysql() { $users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll(); return $this->asJson($users); }
1
2
3
4
5
Ejemplo de PostgreSQL
Configurar PostgreSQL
Configura la información de conexión de PostgreSQL en el archivo
config/db.php
:phpreturn [ 'class' => 'yii\db\Connection', 'dsn' => 'pgsql:host=127.0.0.1;dbname=servbay_yii2_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ];
1
2
3
4
5
6
7Escribir datos de usuarios
Escribe datos de usuarios en el controlador:
phppublic function actionPgsqlAdd() { Yii::$app->db->createCommand()->insert('users', [ 'name' => 'ServBay', 'email' => '[email protected]', ])->execute(); return $this->asText('User added'); }
1
2
3
4
5
6
7
8Usar PostgreSQL
Llama a la base de datos en el controlador:
phppublic function actionPgsql() { $users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll(); return $this->asJson($users); }
1
2
3
4
5
Siguiendo los pasos anteriores, habrás creado y ejecutado con éxito un proyecto Yii 2, utilizando las funciones proporcionadas por ServBay para gestionar y acceder a tu proyecto, y conectándote a múltiples bases de datos para acceder a los datos. Espero que este artículo te ayude a comenzar rápidamente con Yii 2 y aplicarlo a tus proyectos.