Herramientas Informaticas

Etiqueta: composer

🚀 ¿Ruta fantasma, falta de permisos o se te olvidó el método? Diagnóstico quirúrgico en CI4 Boilerplate

Entrada fija

Dime si no te ha pasado: estás picando código a altas horas, das clic a un botón flamante en tu panel de administración, y la pantalla te arroja un frío e implacable Error 404 🥶.

En ese momento empieza la ruleta rusa mental del desarrollador:

  • 🧐 ¿Escribí mal la URL en el archivo de rutas?
  • 👻 ¿La ruta sí está dada de alta, pero se me olvidó crear el método en el controlador?
  • 🔒 ¿O el usuario simplemente no tiene permisos y el sistema decidió fingir demencia ocultando la página como 404?

Hasta ahora, en julio101290/boilerplate, cualquier tropiezo en los filtros de acceso lanzaba una excepción silenciosa. Y para ponerle más drama al asunto, si un usuario sin sesión activa caía en una página de error, la barra superior de AdminLTE colapsaba con el clásico:

💥 Call to undefined function user() in header.php

¡Se acabaron las adivinanzas a ciegas! Llegó una actualización directa a las entrañas del paquete para que tu consola y tu pantalla te digan la verdad sin rodeos 🔍⚡.

🛠️ ¿Qué hay de nuevo bajo el capó?

En lugar de meter todos los fallos en la misma bolsa del 404, ahora el boilerplate audita la petición y clasifica el problema en tres escenarios visuales clarísimos:

1. 🛡️ Falta de Permisos (Acceso Denegado 403)

El filtro ya no enmascara el acceso denegado. Si el usuario intenta entrar a un módulo para el que no tiene privilegios (por ejemplo manage-user), el panel muestra una tarjeta de advertencia en color ámbar señalando con precisión quirúrgica:

  • «Acceso Restringido: Te falta el permiso [nombre-del-permiso]».

2. 🗺️ La Ruta No Existe (404 Genuino)

Si escribiste mal la URL en el navegador o hay un enlace roto en el menú, el enrutador captura la petición y despliega una tarjeta roja indicando la URI consultada, confirmando que esa regla jamás ha existido en tus rutas.

3. 🧩 Ruta Registrada, pero Código Faltante (¡Atrapado con las manos en el código!)

Este es el auténtico salvavidas para el día a día. Si ya registraste la ruta apuntando a VentasController::cobrar, pero aún no has creado la clase o se te olvidó escribir la función cobrar(), el sistema utiliza reflexión de PHP e inspecciona el archivo:

  • ⚠️ «La ruta está bien, pero la clase VentasController no existe.»
  • ⚠️ «El controlador existe, pero el método cobrar() no está declarado.»

4. 🦺 Layout y Navbar Blindados al 100%

Se reforzó header.php para cargar el helper de autenticación bajo demanda y verificar si existe una sesión activa antes de consultar user()->profile_image. Cero errores fatales si un visitante anónimo o un bot cae en una página rota.

🔍 Revisa el código del cambio

Todos los detalles técnicos y el diff de esta actualización están disponibles en el repositorio oficial:

👉 Commit con los cambios: Ver en GitHub (commit a50a68d)

📦 Pruébalo y mantente al día

Esta mejora te ahorrará horas de depuración fantasma en CodeIgniter 4, manteniendo tu arquitectura limpia, robusta y amigable con el equipo de desarrollo.

Para no perderte las próximas actualizaciones de módulos, tutoriales y recursos de código, pásate por mis canales oficiales:

Cómo usar Composer con symlinks para desarrollo local en CodeIgniter 4

Entrada fija

Cuando trabajas con múltiples paquetes en PHP (como módulos propios), llega un punto donde necesitas debuggear directamente el código del paquete y no una copia dentro de vendor.

Si alguna vez terminaste debuggeando en vendor/ en lugar de tu proyecto real… esto es para ti.


🔥 El problema

Por defecto, Composer:

  • Descarga paquetes desde GitHub
  • Los copia en vendor/
  • Xdebug trabaja sobre esa copia

Resultado:

  • Código duplicado
  • Cambios no se reflejan
  • Debug incómodo

🧠 La solución: usar type: path

{
  "repositories": [
    {
      "type": "path",
      "url": "../boilerplateproducts",
      "options": {
        "symlink": true
      }
    }
  ]
}

⚙️ ¿Qué hace esto?

  • Usa tu carpeta local
  • No descarga desde GitHub
  • Crea un symlink en vendor

🔍 Verificar que funciona

composer update

Debes ver:

Installing julio101290/boilerplateproducts: Symlinking from ../boilerplateproducts

Y luego:

ls -l vendor/julio101290/boilerplateproducts

Resultado esperado:

boilerplateproducts -> ../../../boilerplateproducts

🚀 Beneficios

  • Debug directo en tu código
  • Cambios en tiempo real
  • Sin duplicación
  • Flujo más rápido

⚠️ Error común

No mezcles path y vcs:

{
  "type": "path",
  "url": "../boilerplateproducts"
},
{
  "type": "vcs",
  "url": "https://github.com/usuario/boilerplateproducts"
}

Composer puede ignorar el local y usar GitHub.


✅ Desarrollo correcto

rm -rf vendor composer.lock
composer update

🟢 Desarrollo vs Producción

Desarrollo

  • path
  • symlink
  • debug directo

Producción

  • vcs
  • descarga desde GitHub
  • entorno limpio

⚡ Scripts útiles

dev.sh

#!/bin/bash
rm -rf vendor composer.lock
COMPOSER=composer.local.json composer update

prod.sh

#!/bin/bash
rm -rf vendor composer.lock
composer update

🧠 Tip PRO

{
  "repositories": [
    {
      "type": "path",
      "url": "../boilerplateproducts",
      "options": { "symlink": true }
    }
  ],
  "config": {
    "preferred-install": "source"
  }
}

Ejecutar:

COMPOSER=composer.local.json composer update

💡 IDE

Puedes integrar esto con NetBeans usando scripts o herramientas externas.


✅ Conclusión

  • No debuggees código en vendor
  • Usa symlink
  • Automatiza tu flujo

Resultado: desarrollo más rápido y limpio 🚀

Cómo instalar Composer en Linux Mint 21.3 (Xia)

Entrada fija

Cómo instalar Composer en Linux Mint 21.3 (Xia)

Sigue estos pasos desde la terminal para instalar Composer correctamente:

1️⃣ Instalar PHP y dependencias

sudo apt update
sudo apt install php-cli unzip curl

2️⃣ Descargar el instalador de Composer

curl -sS https://getcomposer.org/installer -o composer-setup.php

3️⃣ Verificar integridad del instalador (opcional)

HASH=$(curl -sS https://composer.github.io/installer.sig)
php -r "if (hash_file('sha384', 'composer-setup.php') === '$HASH') { echo 'Verificado correctamente'.PHP_EOL; } else { echo 'ERROR: Archivo corrupto'.PHP_EOL; unlink('composer-setup.php'); }"

4️⃣ Instalar Composer globalmente

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

5️⃣ Verificar instalación

composer --version

🧹 Eliminar instalador (opcional)

rm composer-setup.php

¡Listo! Ya tienes Composer instalado en tu sistema.

🧰 Cómo instalar Composer en Deepin Linux 23

Entrada fija

🧰 Cómo instalar Composer en Deepin Linux 23

Composer es el gestor de dependencias más popular para PHP. Esta guía te mostrará cómo instalarlo correctamente en Deepin Linux 23 paso a paso.


✅ Paso 1: Verificar si PHP está instalado

Abre una terminal y ejecuta:

php -v

Si no tienes PHP instalado, puedes hacerlo con:

sudo apt update
sudo apt install php-cli php-mbstring unzip curl

✅ Paso 2: Descargar e instalar Composer

Ejecuta estos comandos en la terminal:

cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php

(Opcional) Verifica la integridad del instalador:

HASH=$(curl -sS https://composer.github.io/installer.sig)
php -r "if (hash_file('sha384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Instala Composer de forma global:

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

✅ Paso 3: Verificar la instalación

Comprueba que Composer se instaló correctamente:

composer --version

Deberías ver algo como:

Composer version 2.x.x 202x-xx-xx

🔄 ¿Cómo actualizar Composer?

Para actualizar Composer más adelante:

composer self-update

📌 Notas finales

  • Composer se instala globalmente, por lo que puedes usarlo desde cualquier proyecto PHP.
  • Si deseas desinstalarlo, simplemente elimina el archivo /usr/local/bin/composer.

🎉 ¡Listo! Ya tienes Composer instalado y funcionando en tu sistema Deepin 23. Puedes comenzar a gestionar tus dependencias PHP de manera profesional.

Creado con WordPress & Tema de Anders Norén