obsyra/framework

Obsyra - Framework MVC ligero para PHP

Maintainers

Package info

gitlab.com/tragatripas/obsyra

Issues

Type:project

pkg:composer/obsyra/framework

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

v1.0.0 2026-03-26 15:38 UTC

README

PHP Version License Version

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

ComandoDescripció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

ComandoDescripción
obsyra migrateEjecutar todas las migraciones
obsyra migrate:rollbackRevertir migraciones
obsyra seedEjecutar seeders

Servidor

ComandoDescripción
obsyra serveIniciar servidor (127.0.0.1:8000)
obsyra serve --port=9000Puerto personalizado
obsyra serve --host=0.0.0.0Escuchar en todas las interfaces

Proyecto

ComandoDescripción
obsyra new <nombre>Crear nuevo proyecto
obsyra --helpMostrar 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/usuariosUsuariosController::index()
  • localhost/usuarios/nuevoUsuariosController::nuevo()
  • localhost/usuarios/editar/5UsuariosController::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

  1. Fork el proyecto
  2. Crea una rama (git checkout -b feature/nueva-funcionalidad)
  3. Commit tus cambios (git commit -m 'Agregar nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Abre un Pull Request

Licencia

MIT License - ver LICENSE para más detalles.

Soporte

Hecho con ❤️ por Tragatripas