obsyra / framework
Obsyra - Framework MVC ligero para PHP
v1.0.0
2026-03-26 15:38 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^10.0
This package is not auto-updated.
Last update: 2026-04-21 09:48:57 UTC
README
Obsyra es un framework MVC ligero y moderno para PHP. Ideal para proyectos medianos que necesitan velocidad y simplicidad sin la complejidad de frameworks más grandes.
Características
- Arquitectura MVC - Separación clara de responsabilidades
- CLI incluido - Generador de código automático
- Elementos UI - Componentes PHP para formularios
- Sistema de migraciones - Control de base de datos
- Middleware - Filtros de request/response
- Routing - URL amigables con .htaccess
Requisitos
- PHP >= 7.4
- MySQL / MariaDB
- Composer (recomendado)
Instalación
Opción 1: Desde Packagist (recomendado)
composer global require obsyra/framework
Opción 2: Clonar directamente
git clone https://gitlab.com/tragatripas/obsyra.git mi-proyecto
cd mi-proyecto
composer install
Opción 3: Usando el CLI
# Instalar globalmente primero
composer global require obsyra/framework
# Crear nuevo proyecto
obsyra new mi-proyecto
cd mi-proyecto
composer install
Inicio rápido
1. Configurar base de datos
Edita app/Core/Config.php:
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'tu_base_de_datos');
define('DB_CHARSET', 'utf8mb4');
2. Iniciar servidor
php obsyra serve
O con Composer:
composer serve
Accede a: http://127.0.0.1:8000
3. Crear tu primera funcionalidad
# Crear modelo, controlador y vistas
php obsyra make:all Usuario
# O individually
php obsyra make:model Usuario
php obsyra make:controller Usuario
php obsyra make:view Usuario
CLI - Comandos disponibles
Generación de código
| Comando | Descripción |
|---|---|
obsyra make:controller <nombre> | Crear controlador |
obsyra make:model <nombre> | Crear modelo |
obsyra make:view <nombre> | Crear vistas (index, crear, editar) |
obsyra make:migration <nombre> | Crear migración |
obsyra make:middleware <nombre> | Crear middleware |
obsyra make:seeder <nombre> | Crear seeder |
obsyra make:request <nombre> | Crear request |
obsyra make:resource <nombre> | Crear resource |
obsyra make:test <nombre> | Crear test |
obsyra make:all <nombre> | Crear modelo, controlador y vistas |
Base de datos
| Comando | Descripción |
|---|---|
obsyra migrate | Ejecutar todas las migraciones |
obsyra migrate:rollback | Revertir migraciones |
obsyra seed | Ejecutar seeders |
Servidor
| Comando | Descripción |
|---|---|
obsyra serve | Iniciar servidor (127.0.0.1:8000) |
obsyra serve --port=9000 | Puerto personalizado |
obsyra serve --host=0.0.0.0 | Escuchar en todas las interfaces |
Proyecto
| Comando | Descripción |
|---|---|
obsyra new <nombre> | Crear nuevo proyecto |
obsyra --help | Mostrar ayuda |
Estructura del proyecto
mi-proyecto/
├── app/
│ ├── Controllers/ # Controladores
│ ├── Models/ # Modelos
│ ├── Views/ # Vistas
│ ├── Http/
│ │ └── Middleware/ # Middlewares
│ ├── Requests/ # Request validation
│ ├── Resources/ # API Resources
│ └── Core/ # Núcleo del framework
├── database/
│ ├── migrations/ # Migraciones
│ └── seeders/ # Seeders
├── public/
│ ├── index.php # Entry point
│ ├── img/ # Imágenes
│ ├── js/ # JavaScript
│ └── css/ # Estilos
├── tests/ # Tests
├── obsyra # CLI ejecutable
└── composer.json
Uso de Elementos (UI)
Obsyra incluye componentes PHP para generar formularios:
use App\Core\Elementos;
// Input de texto
echo Elementos::input([
'id' => 'nombre',
'name' => 'nombre',
'label' => 'Nombre',
'type' => 'text',
'required' => true
]);
// Select
echo Elementos::select([
'id' => 'rol',
'name' => 'rol',
'label' => 'Rol',
'opciones' => [
'admin' => 'Administrador',
'user' => 'Usuario'
]
]);
// Switch (toggle)
echo Elementos::switch([
'id' => 'activo',
'name' => 'activo',
'label' => 'Activo',
'valor' => true
]);
Rutas
Las rutas se generan automáticamente según el patrón:
/controlador/metodo/parametro
Ejemplos:
localhost/usuarios→UsuariosController::index()localhost/usuarios/nuevo→UsuariosController::nuevo()localhost/usuarios/editar/5→UsuariosController::editar(5)
Middleware
Crear middleware:
php obsyra make:middleware Auth
Registrar en el controllador:
class UsuariosController extends Controller
{
public function __construct()
{
$this->middleware('AuthMiddleware');
}
}
Migraciones
Crear migración:
php obsyra make:migration crear_usuarios
Editar la migración en database/migrations/:
public function up()
{
$sql = "CREATE TABLE IF NOT EXISTS usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
$this->db->conect()->exec($sql);
}
Ejecutar migraciones:
php obsyra migrate
Testing
# Ejecutar tests
composer test
# Generar test para un método
php obsyra make:test
php obsyra test:make UsuariosController@mostrar
Configuración
Edita app/Core/Config.php para configurar:
- Base de datos
- URL base
- API keys (TinyMCE, etc.)
- Sesiones
Contribuir
- Fork el proyecto
- Crea una rama (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -m 'Agregar nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
Licencia
MIT License - ver LICENSE para más detalles.
Soporte
- Issues: https://gitlab.com/tragatripas/obsyra/-/issues
- Documentación: En construcción
Hecho con ❤️ por Tragatripas