Tutorial completo de Phalcon para principiantes

En este tutorial de Phalcon, te presentaremos este marco de trabajo y te brindaremos instrucciones paso a paso para crear tu primer proyecto. Todos nuestros planes de hosting web incluyen la extensión Phalcon por defecto, ¡por lo tanto puedes probar este increíble marco de trabajo sin mucho esfuerzo!

Al final de este tutorial de Phalcon, tendrás un formulario de registro funcional que almacenará la información recopilada en una base de datos MySQL.

¿Qué es Phalcon?

Phalcon es un marco de trabajo PHP de alto rendimiento basado en la arquitectura model-view-controller (MVC). Su lanzamiento inicial data del 2012 y siempre ha sido de código abierto. Lo esencial está escrito en los lenguajes de programación C y Zephir. Phalcon también es famoso por ser el primer marco de trabajo en implementar el mapeo objeto-relacional (ORM, por sus siglas en inglés) en C.

Phalcon es altamente personalizable debido a la presencia de Zephir, un lenguaje de programación de alto nivel. Pero eso no debería intimidarte, ya que Phalcon se puede usar para desarrollar aplicaciones PHP sin ningún conocimiento del lenguaje C. Comencemos este tutorial de Phalcon comparándolo con otros marcos de trabajo PHP bien conocidos.

Phalcon – P de Performance

La motivación para desarrollar Phalcon era crear una extensión para un servidor web que mejorara las velocidades de ejecución, redujera la utilización de recursos y garantizara un mayor procesamiento de solicitudes en comparación con otros marcos de trabajo PHP.

La mayor ventaja competitiva de Phalcon es la utilización eficiente de la memoria. Esto elimina la necesidad de mantener cualquier información fuera de la memoria; mientras que la mayoría de los otros marcos de trabajo PHP utilizan la lectura de archivos y las estadísticas de archivos, que son operaciones costosas. Al eliminar la necesidad de estas, Phalcon optimiza el rendimiento y mejora la eficiencia.

Veamos algunos resultados de la evaluación comparativa:

Phalcon-comparativa-memoria-por-solicitud

Debido a que Phalcon no requiere archivos centrales, el uso de memoria por cada solicitud es considerablemente menor en comparación con otros marcos de trabajo PHP.

phalcon-comparativa-solicitudes-por-segundo

También podemos ver que Phalcon pudo completar más de 1400 solicitudes por segundo. Mientras tanto, otros marcos de trabajo tuvieron más dificultades.

phalcon-comparativa-archivos-por-solicitud

Menos archivos por cada solicitud significa un procesamiento más rápido y Phalcon hace un trabajo increíble en esta prueba.

phalcon-tiempo-1000-solicitudes

El marco de trabajo Phalcon también puede completar 1000 solicitudes a la velocidad del rayo. Mientras que otros marcos de trabajo tardan bastante en llegar a la misma cantidad.

Phalcon vs. Laravel

A pesar de que Laravel es ampliamente considerado como la mejor opción en cuanto a marcos de trabajo PHP, no puede competir con Phalcon cuando se trata de velocidad, escalabilidad y rendimiento.

Sin embargo, Laravel es comparativamente más fácil de aprender y tiene un mejor soporte para la depuración, mientras que en Phalcon necesitas conocimiento del lenguaje C para depurar el código. Otra diferencia es que Laravel se puede instalar en cualquier servidor, mientras que la instalación de Phalcon necesita acceso root al servidor.

Phalcon vs. CodeIgniter

Cuando no había más marcos de trabajo PHP, estaba CodeIgniter. A pesar de que ha existido por mucho tiempo, su desarrollo ha sido un poco lento en los últimos años.

Tanto Phalcon como CodeIgniter tienen características comparables, documentación exhaustiva y una amplia comunidad de desarrollo, aunque Phalcon es considerablemente más rápido. Sin embargo, CodeIgniter puede llegar a alcanzar a Phalcon con la optimización de hardware adecuada.

Phalcon vs. Symfony

Tanto Symfony como Phalcon son proyectos de código abierto con soporte multilingüe y ORM. Son extensiones de la arquitectura MVC, tienen sus propios CLIs y documentaciones detalladas. Si planeas construir API RESTs, ambas son opciones sólidas.

Pero una vez más, cuando se trata de evaluación comparativa del rendimiento, Phalcon se lleva la victoria. En promedio, Phalcon puede procesar un 50 por ciento más de solicitudes por segundo en comparación con Symfony. Sin embargo, la depuración a nivel de plataforma puede ser un poco difícil en Phalcon, ya que tienes que revisar código escrito en C. Por lo tanto, la depuración en Symfony es relativamente más fácil.

Configuración del marco de trabajo PHP Phalcon

Con Phalcon, todo lo que tienes que hacer es instalar una extensión PHP, que ocupa muy poco espacio. Sin embargo, necesitarás acceso root para hacerlo. Afortunadamente, ya está instalado en nuestros planes de hosting compartido, por lo que la configuración inicial no será difícil. También veremos cómo configurar Phalcon en un VPS Linux ejecutado en Ubuntu 16.04. Para hacerlo un poco más fácil, usaremos las herramientas de desarrollador de Phalcon para ambos casos.

Sin más preámbulos, ¡entremos en materia!

Opción 1: configuración de Phalcon en el hosting compartido de Hostinger

En primer lugar, comenzaremos instalando Phalcon devtools.

¡Importante! Para esta tarea, utilizaremos Composer. Haz clic aquí para más información sobre cómo instalarlo.

Para comenzar, conéctate a tu cuenta de hosting mediante conexión SSH.

Usa el comando pwd para verificar tu ubicación actual. Recomendamos configurarlo en un directorio arriba de public_html; esto mantendrá las cosas más organizadas. Si el comando muestra los siguientes resultados, estás en el lugar correcto:

-bash-4.1$ pwd
/home/YOUR_USERNAME

Ahora, creemos un archivo composer.json con el siguiente contenido:

{
    "require-dev": {
        "phalcon/devtools": "~4.0"
    }
}

Puedes hacerlo utilizando el Administrador de archivos o escribiendo el siguiente comando en SSH:

nano composer.json

Esto creará tu archivo y abrirá un editor de texto. Pega los contenidos necesarios y presiona CTRL + X para guardar todo. Para instalar las herramientas de desarrollador Phalcon, ejecuta el siguiente comando:

composer install

Espera a que el proceso termine, ya que puede tardar unos minutos. A continuación, crearemos un alias para que las herramientas de desarrollo sean completamente funcionales. Si seguiste los pasos exactos de este tutorial, podrás crearlo con la siguiente sintaxis:

alias
phalcon=/home/YOUR_USERNAME/vendor/phalcon/devtools/phalcon.php

¡Importante! No olvides reemplazar YOUR_USERNAME con tu nombre de usuario real.


Ya tenemos herramientas de desarrollador funcionales de Phalcon. Para comprobar si realmente funcionan, escribe el siguiente comando:

phalcon

Y deberías recibir un resultado similar a este:

Phalcon DevTools (3.2.12)
 
Available commands:
info (alias of: i)
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
all-models (alias of: create-all-models)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
serve (alias of: server)
console (alias of: shell, psysh)

Dado que nuestros servidores de hosting compartido ya tienen todos los ingredientes para ejecutar el marco de trabajo de Phalcon, no tendrás que instalar extensiones adicionales. El marco de trabajo de Phalcon está ligeramente acoplado, lo que significa que puedes tener cualquier estructura de directorio que creas conveniente.

Pero para simplificar, utilizaremos la estructura que las herramientas de desarrollador de Phalcon nos proporciona. Vayamos al directorio public_html usando el siguiente comando:

cd public_html

Cuando estés allí, usa la sintaxis de la herramienta de desarrollador de Phalcon para configurar todo:

phalcon create-project example

Ahora, si vas a TuDominio.com/ejemplo en el navegador, verás una pantalla similar:

configuracion-phalcon-hostinger-hosting

Opción 2: Configuración de Phalcon en un VPS

Ahora, aprendamos a configurar el marco de trabajo PHP Phalcon en un servidor privado. Esto tomará un poco más de tiempo, ya que tendremos que instalar más componentes.

Te guiaremos en el proceso para que no sea tan complicado. En esta parte usaremos un VPS que se ejecuta en Ubuntu 16.04.

En primer lugar, necesitaremos estos componentes:

  • Apache
  • MySQL
  • PHP 5.5+
  • Composer

Apache, MySQL y PHP están incluidos por defecto en la mayoría de las plantillas de VPS. Por lo tanto, solo tendrás que instalar Composer para continuar. Cuando hayas terminado con eso, tendrás que configurar la extensión PHP de Phalcon requerida. Ejecuta el siguiente comando para hacerlo:

curl -s 
https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh | 
sudo bash

Ahora que tenemos todos los componentes, configuremos el marco de trabajo Phalcon. Comenzaremos por obtener las herramientas de desarrollador de Phalcon, lo que simplificará el proceso de uso del marco. Comienza por ir un directorio arriba de la raíz del dominio. En nuestro ejemplo, sería:

cd /var/www

Usa este comando para crear un archivo composer.json:

nano composer.json

Esto creará el archivo y lo abrirá en una interfaz de editor de texto. Pega el siguiente contenido allí:

{
    "require-dev": {
        "phalcon/devtools": "~3.2"
    }
}

Presiona CTRL + X para guardarlo. Continúa con la instalación de la herramienta de desarrollador ingresando este comando:

composer install

Cuando hayas terminado, crea un alias para asegurar que las herramientas de desarrollador de Phalcon sean funcionales. En nuestro ejemplo, la sintaxis debería verse así:

alias phalcon=/var/www/vendor/phalcon/devtools/phalcon.php

Veamos si funcionan al ejecutar este comando:

phalcon

El resultado debería ser:

Phalcon DevTools (3.2.12)
 
Available commands:
info (alias of: i)
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
all-models (alias of: create-all-models)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
serve (alias of: server)
console (alias of: shell, psysh)

Ahora estamos listos para crear un proyecto. Este marco de trabajo está ligeramente acoplado, lo que te permite tener cualquier estructura de directorio. En este ejemplo, vamos a ir con la estructura de directorios predeterminada proporcionada por las herramientas de desarrollador. Comienza navegando al directorio raíz de tu dominio. En nuestro ejemplo, es:

cd /var/www/hostinger-tutorials.com/public_html

A continuación, usa este comando para crear la estructura del directorio y comenzar:

phalcon create-project example

Ahora puedes abrir tu dominio en el navegador (por ejemplo, TuDominio.com/ejemplo) y deberías ver algo como esto:

configuracion-phalcon-en-VPS

Creación de tu primer proyecto con el marco de trabajo PHP Phalcon

Ahora, intentemos crear una aplicación básica. Imagina que estas creando un proyecto y quieres reunir una lista de posibles usuarios o clientes antes del lanzamiento. Podemos hacer esto creando un formulario de registro que almacene información en una base de datos MySQL.

Entendiendo la estructura de directorios de Phalcon

Como se indica en nuestro tutorial de Phalcon, este marco de trabajo está ligeramente acoplado. Esto significa que puedes crear cualquier estructura de directorio. Sin embargo, para esta demostración, usaremos la estructura predeterminada creada mediante las herramientas de desarrollador de Phalcon. ¡Veamos cómo funciona!

El directorio principal de la aplicación se conoce como la carpeta raíz. Cualquier carpeta que esté por fuera del directorio raíz es inaccessible para el servidor web y no está dentro del alcance del proyecto Phalcon. En nuestro caso, es el directorio example (ejemplo).

Cuando creas un proyecto aparecerán las siguientes carpetas dentro del sistema de archivos:

  • App: esta carpeta es la esencia de toda la aplicación. Todas las carpetas y archivos de script están contenidos dentro de esta carpeta. Específicamente, contiene:
    • Config: como su nombre lo indica, toda la configuración necesaria irá dentro de esta subcarpeta. Ya sea que quieras agregar una nueva biblioteca de terceros o establecer una conexión de base de datos, podrás hacerlo colocando el código relevante en los archivos dentro de esta carpeta.
    • Controllers: los controladores procesan las solicitudes y formulan respuestas acordes. Cualquier controlador que quieras definir formará parte de esta carpeta.
    • Library: todas las bibliotecas externas de terceros que quieras incluir se deben agregar a esta carpeta.
    • Migrations: si quieres migrar datos, tendrás que agregar o editar archivos dentro de esta carpeta.
    • Models: esta carpeta contiene de todo lo relacionado con tus datos. Esto incluye interactuar con la base de datos para obtener y presentar datos.
    • Views: las vistas en una arquitectura MVC son las responsables de mostrar los datos al usuario. Toda la información relacionada con la vista, como el contenido de la página, estará presente en esta carpeta.
  • Cache: el almacenamiento en caché juega un papel vital en el mantenimiento del rendimiento y todo lo relacionado con él va en esta carpeta.
  • Public: contiene carpetas para CSS, JavaScript, metadatos, las imágenes que se subirán, los archivos que se deben cargar y algunos datos temporales relacionados con la aplicación.

Aquí hay una infografía en inglés que puede resultar útil para ayudarte a memorizar la estructura de directorios predeterminada del marco de trabajo Phalcon:

infografía-Phalcon-estructura-de-directorios

Configurar una conexión de base de datos MySQL

En primer lugar, tendrás que crear una base de datos MySQL en la cual la aplicación almacenará los datos del usuario. Puedes hacerlo a través de la sección de Bases de Datos MySQL en el panel de control.

El botón de bases de datos MySQL en hPanel

Una vez hecho esto, tendremos que crear una tabla. Ingresa a la base de datos que creaste a través de phpMyadmin y ve a la sección de SQL.

crear tabla en phpMyadmin

Luego, ejecuta la siguiente consulta:

CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(70) NOT NULL,
`email` varchar(70) NOT NULL,

PRIMARY KEY (`id`) 
);

Esto creará la estructura de tabla requerida.

crear tabla en phpMyadmin

A continuación, naveguemos a /public_html/example/app/config/config.php y configuremos la conexión de la base de datos. Tendrás que editar los siguientes campos:

'database' => [
        'host'        => 'Your_MySQL_Hostname',
        'username'    => 'Your_MySQL_User',
        'password'    => 'Your_MySQL_Password',
        'dbname'      => 'Your_MySQL_Database',

Cuando completes la información de MySQL, puedes continuar con el siguiente paso.

Agregar un nuevo modelo

Ahora, necesitamos crear un modelo que se asignará a la tabla users que creaste en el paso anterior. La forma más fácil de crearlo es con las herramientas de desarrollador de Phalcon. Usando la terminal, navega a tu directorio raíz de Phalcon. En nuestro ejemplo, es:

cd public_html/example

Aquí está el comando que creará el modelo requerido:

phalcon model users

El nuevo archivo aparecerá en public_html/example/app/model/Users.php.

Agregar un nuevo controlador

En esta demostración, tendremos una página de inicio (home) y una de registro (signup). El controlador de la página de inicio ya está creado, por lo que tendremos que agregar uno nuevo para la página de registro. También podemos hacerlo con la ayuda de las herramientas de desarrollador de Phalcon. Usa este comando para crear un nuevo controlador:

phalcon controller Signup

Aparecerá en public_html/example/app/controllers/SignupController.php. Ahora abramos el archivo y agreguemos algunas líneas para que coopere con la base de datos. Nuestra versión final del archivo se ve así:

<?php

class SignupController extends \Phalcon\Mvc\Controller
{

    public function indexAction()
    {

    }
    
      public function registerAction()
    {
        $user = new Users();

        // Store and check for errors
        $success = $user->save(
            $this->request->getPost(),
            [
                "name",
                "email",
            ]
        );

        if ($success) {
            echo "Thanks you for signing up!";
        } else {
            echo "Oops, seems like the following issues were encountered: ";

            $messages = $user->getMessages();

            foreach ($messages as $message) {
                echo $message->getMessage(), "<br/>";
            }
        }

        $this->view->disable();
    }
}

Crear contenido de página

El texto y el contenido de tus páginas están disponibles en public_html/example/app/views. Cada página tiene su directorio dedicado. Verás que la carpeta de índice (index) ya está creada. Por lo tanto, solo necesitaremos crear una carpeta de registro (signup) con un archivo index.phtml vacío. El formato .phtml te permite usar código HTML y PHP.

Antes que nada, editemos el archivo de índice existente en public_html/example/app/views/index/index.phtml. Esto es lo que hicimos:

<div class="page-header">
    <h1>Welcome to Project Phalcon</h1>
</div>
<p>Want to be the first to get the latest updates?</p>

<?php

echo $this->tag->linkTo(
    "signup",
    "Sign Up Here!"
);

El código PHP presente en el archivo redirigirá a los usuarios a la nueva página de registro (signup).

A continuación, editamos public_html/example/app/views/signup/index.phtml. Queremos que los usuarios se registren en esta página. Aquí está el código que agregamos:

<h2>Sign up using this form</h2>

<?php echo $this->tag->form("signup/register"); ?>

    <p>
        <label for="name">Name</label>
        <?php echo $this->tag->textField("name"); ?>
    </p>

    <p>
        <label for="email">E-Mail</label>
        <?php echo $this->tag->textField("email"); ?>
    </p>

    <p>
        <?php echo $this->tag->submitButton("Register"); ?>
    </p>

</form>

¡Eso es todo! Ahora estás listo para verificar la creación de tu marco de trabajo PHP Phalcon.

Prueba de la aplicación Phalcon

En este momento la aplicación Phalcon se encuentra en el directorio public_html/example. Esto significa que se abrirá a través de TuDominio.com/example en el navegador. Para hacer que se cargue directamente a través de TuDominio.com, puedes pasar los archivos a public_html usando el Administrador de archivos.

La página Mover del gestor de archivos Hostinger

Luego, ingresa a tu dominio a través del navegador y verás una página de inicio similar:

Phalcon ejemplo pagina de inicio

Si das clic en el botón Sign Up Here (Regístrate aquí), te dirigirá a la página de registro que creamos:

Phalcon ejemplo pagina de registro

Cuando un usuario envía sus datos, verá una pantalla de confirmación:

Phalcon ejemplo pagina de confirmacion

En caso de que haya ingresado algo incorrectamente, el marco de trabajo le informará lo que salió mal:

Phalcon ejemplo pagina de error

Incluso reconocerá si la dirección de correo electrónico está en el formato correcto. En caso de que haya sido mal escrita o le falte un símbolo, el usuario verá:

Phalcon ejemplo email incorrecto

Por último, todas las entradas correctas aparecerán en la tabla users de tu base de datos:

Phalcon nueva entrada en base de datos

¡Felicidades! Al haber completado este tutorial de Phalcon, has creado tu primer formulario de registro básico.

Conclusión

Phalcon es un marco de trabajo PHP relativamente nuevo. Si bien no es tan popular como Laravel u otros marcos, tiene un gran potencial y una velocidad increíble. También requiere poco esfuerzo para configurarlo. Si te gusta crear y desarrollar sitios web, definitivamente vale la pena probar Phalcon.

Quién sabe, ¡tal vez se convierta en tu marco favorito! Asegúrate de consultar la documentación oficial si quieres obtener más información.

¿Tienes algún consejo, truco o idea que quieras compartir? ¡Queremos verlo en el área de comentarios!

Author
El autor

Gustavo B.

Gustavo es un apasionado por la creación de sitios web. Se enfoca en la aplicación de estrategias SEO en Hostinger para España y Latinoamérica, así como la creación de contenidos de alto nivel. Cuando no está aplicando nuevos trucos en WordPress lo puedes encontrar tocando la guitarra, viajando o tomando un curso online.