SkillAgentSearch skills...

Sao

Sao es un framework de desarrollo web en PHP diseñado para simplificar y agilizar el proceso de creación de aplicaciones web potentes y elegantes. Fue creado como método de aprendizaje, pero sigue creciendo y desarrollándose aún más.

Install / Use

/learn @4rcan31/Sao
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Introducción a Sao - Un Framework PHP para Desarrollo Web

Sao es un potente framework de desarrollo web en PHP que tiene como objetivo simplificar y acelerar el proceso de creación de aplicaciones web eficientes y elegantes. Aunque se originó como una herramienta de aprendizaje, Sao ha evolucionado y se ha convertido en una opción viable para proyectos más grandes. Este framework se basa en el diseño Modelo Vista Controlador (MVC) y ofrece una variedad de características y herramientas para ayudar a los desarrolladores a construir aplicaciones web de alta calidad de manera eficiente.

Proyectos Destacados Desarrollados con Sao

Aquí te presentamos algunos proyectos destacados que se han desarrollado utilizando Sao:

  1. Proyecto FTechnology
    • Repositorio: FTechnology en GitHub
    • Descripción: Este proyecto se centra en el desarrollo de una aplicación para ventas de productos de mascotas y el control de Croquette, un dispensador de comida para mascotas basado en hardware. Sao se utiliza como el framework principal para crear esta aplicación, lo que demuestra su versatilidad y capacidad para abordar proyectos variados.

Instalación

Para descargar Sao, ejecuta:

git clone https://github.com/4rcan31/Sao.git

Una vez que esté instalado, debes eliminar la carpeta .git.

En Windows, usa el comando rmdir:

rmdir /s /q sao\.git

En sistemas Unix o Linux (incluyendo macOS), usa el comando rm:

rm -rf Sao/.git

Ahora solo necesitas cambiar el nombre de la carpeta Sao al nombre de tu proyecto. Utiliza el comando:

En Windows:

ren sao nombre_de_tu_app

En Unix, Linux o macOS:

mv Sao nombre_de_tu_app

Ahora puedes ingresar a tu proyecto ejecutando:

cd nombre_de_tu_app

Puedes verlo funcionando ejecutando

php jenu serve

Configuración

Ahora debes configurar algunos datos para tu aplicación, como la asignación de variables globales. Dirígete al archivo .env. En este archivo, encontrarás variables de configuración. Dentro del archivo .env, verás lo siguiente:

APP_NAME=Sao
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost
APP_PORT=8080
APP_ADDRESS="127.0.0.1"
APP_KEY=7a4bd04541c36b406506b28376aafcbdc8c7a0fe45076ffb5b8b10476be3f5a6

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=name_your_database
DB_USERNAME=root
DB_PASSWORD=

Configuración .env de la Aplicación

  • APP_NAME: Este es el nombre de la aplicación.
  • APP_DEBUG: Este es un valor booleano para establecer si la aplicación está en modo depuración o en modo producción.
  • APP_URL: Esta es la URL de la aplicación.
  • APP_PORT: Este es el puerto.
  • APP_ADDRESS: Esta es la dirección IP de la aplicación.
  • APP_KEY: Esta es una clave que la aplicación utiliza (se utiliza principalmente en la aplicación de sesiones).

Configuración .env de la Base de Datos

Valores por defecto (generalmente no cambian)
  • DB_CONNECTION: Gestor al que se conectará (por el momento Sao solamente soporta a MySQL como driver).
  • DB_HOST: Host al que se conectará.
  • DB_PORT: Puerto del host al que se conectará.
Valores que generalmente cambian
  • DB_DATABASE: Nombre de la base de datos a la que se conectará.
  • DB_USERNAME: Nombre de usuario para acceder al gestor de base de datos.
  • DB_PASSWORD: Contraseña para acceder al gestor de base de datos (por defecto es vacía).

Verificar la Conexión a la Base de Datos

Puedes comprobar si la conexión a la base de datos ha sido exitosa. Para hacerlo, ejecuta (una vez que ya estés dentro de la carpeta de tu proyecto):

php jenu comprobate:connection:mysql

Estructura de Directorios

/app

Esta carpeta contiene toda tu aplicación y se divide en 6 carpetas adicionales.

/console

En esta carpeta, encontrarás un archivo llamado console.php. Aquí podrás definir los comandos necesarios para ejecutarlos posteriormente con la aplicación de comandos de Sao, llamada jenu.

/Controllers

Aquí se definen todos los controladores de tu aplicación, que pueden provenir de las solicitudes (request) o de otras fuentes.

/DataBase

Dentro de esta carpeta, encontrarás la subcarpeta:

/migrations

En esta subcarpeta se almacenan todas tus migraciones (tablas) para la base de datos. Para crear una migración, ejecuta:

php jenu make:migration nombre_de_tu_migración

/middlewares

En esta carpeta, puedes crear todos los middlewares de tu aplicación, ya sea para la gestión de sesiones, roles, etc. Estos middlewares se aplicarán a las rutas (no a las vistas).

/Models

Aquí se encuentran todos los modelos de tu base de datos. Básicamente, esta capa está más relacionada con la base de datos. Cada archivo en /Models representa una tabla y puede servir como controlador de tablas.

/Views

Esta carpeta es donde puedes crear todos tus archivos de vistas para tu aplicación. Dentro de ella, hay una subcarpeta ya creada llamada:

/layouts

La carpeta de "layouts" te permite almacenar partes (renders) de las vistas que se repiten en todas las páginas, como encabezados, pies de página y elementos estáticos que son comunes en el sitio web. Esto te permite reutilizarlos desde las vistas.

Uso de Sao

Para comenzar a utilizar Sao y crear tu primer "Hola Mundo", debes familiarizarte con las rutas. Sao utiliza varias bibliotecas y aplicaciones para funcionar, pero en esta sección nos centraremos en cómo hacer que una aplicación funcione. Empezaremos por la creación de rutas, que se encuentran en el directorio app/routes. Todos los archivos en esta carpeta serán manejados por el enrutador de Sao. Para crear una ruta, utiliza la siguiente función:

Route::get('/home', function($request){
    res('Hola mundo');
});

Cuando visites la ruta /home, se enviará una respuesta en formato JSON que dirá "Hola mundo". La función res() toma un array o una cadena como parámetro y lo convierte en JSON para que sea la respuesta. Esto es solo un ejemplo de respuesta; puedes implementar lógica más compleja. Todos los datos de la solicitud están disponibles en la variable $request. Puedes acceder a datos específicos de la solicitud de la siguiente manera:

Request::$path;
Request::$method;
Request::$uri;
Request::$requestTime;   
Request::$headers;
Request::$ip;
Request::$data;
Request::$cookies;
Request::$tokenRequest;

Ahora que tienes acceso a los datos de la solicitud, puedes realizar cualquier lógica que necesites. Puedes responder con JSON o incluso renderizar una vista. Si deseas renderizar una vista, puedes utilizar la función view().

Route::get('/home', function($request){
   view('home');
});

La función view busca un archivo en app/views, en este caso, un archivo llamado home.php, y lo renderiza. La función view también admite un segundo parámetro para pasar datos a la vista:

view('home', $request);

Este segundo parámetro permite pasar datos a la vista para que puedan procesarse allí:

<?php 
// Archivo home.php
$data = ViewData::get(); 

Una vez que se obtienen los datos, ViewData::get(); se vacía automáticamente (los datos en la clase se destruyen).

Si necesitas validar datos, puedes utilizar la función validate($data). Aquí tienes un ejemplo:

Route::get('/home', function($request){
    $validate = validate($request);
    $validate->rule('required', ['name', 'password', 'email']);
    $validate->rule('email', ['email']);
    $validationResult = $validate->validate();
});

La función validate es parte de las bibliotecas de Sao y se utiliza para validar datos, en este caso, los datos del $request. El método $validate->validate() devuelve un valor booleano: true si todas las validaciones son exitosas y false si alguna falla. Las reglas de validación disponibles son las siguientes:

  • required: Requerir un índice (verifica que exista y no esté vacío).
  • contain: Verifica si una cadena contiene una subcadena.
  • email: Valida si una cadena contiene al menos un símbolo "@".
  • is: Valida el tipo de dato.
  • in: Valida si un array existe dentro de otro.
  • numeric: Valida si un valor es un número.
  • phone: Valida si un valor es un número de teléfono.

Ten en cuenta que el validador en /core/validate/validate.php puede tener algunos errores en algunas de las reglas (excepto en required, email, contain y phone).

Puedes desarrollar toda tu aplicación en una sola ruta, pero es mejor dividirla en partes y usar controladores. Para usar controladores, puedes hacer lo siguiente:

Route::get('/home', function($request){
     controller('ViewController', 'home', $request);
});

Lo que hace esto es buscar un archivo llamado app/Controllers/ViewController.php, instanciar su clase y ejecutar la función home(). El tercer parámetro es opcional y se puede utilizar para pasar datos a la función home().

Cuando creas controladores, el nombre del archivo y el nombre de la clase deben ser iguales. Por ejemplo:

<?php
// Archivo ViewController.php

class ViewController extends baseController{

    public function home($request){
        view('home');
    }
}

Ahora puedes llamar a un controlador y seguir toda tu lógica de programación para construir tu aplicación. Sin embargo, todavía no puedes realizar consultas en tu base de datos. Para hacerlo, debes usar un modelo. Para llamara los modelos, utiliza la función model() de la siguiente manera:

<?php
// Archivo ViewController.php

class ViewController extends baseController{

    public function home($request){
       model('users');
    }
}

Esta función buscará un archivo llamado app/Models/users.php e instanciará una clase llamada users.

Nota: Al crear modelos, el nombre del archivo y el nombre de la clase deben ser iguales. Lo que significa que no recibirás sugerencias de métodos de la clase users en tu IDE. Si deseas habilitar sugerenc

Related Skills

View on GitHub
GitHub Stars30
CategoryDevelopment
Updated2mo ago
Forks0

Languages

PHP

Security Score

80/100

Audited on Jan 12, 2026

No findings