Si después de actualizar CodeIgniter 4 te apareció un error como este:

PHP Fatal error:
Undefined property: Config\Format::$jsonEncodeDepth

y el stack trace apunta a:

system/Format/JSONFormatter.php

la causa casi siempre es la misma:
tu archivo app/Config/Format.php quedó desactualizado después de actualizar el framework.


📌 ¿Por qué sucede?

En versiones recientes de CodeIgniter 4 se agregaron nuevas propiedades para el manejo de JSON.

El problema ocurre cuando:

  • actualizas vendor/codeigniter4/framework
  • pero conservas un archivo viejo en:
app/Config/Format.php

Entonces el framework intenta acceder a propiedades que no existen.


⚠️ Error completo

Undefined property: Config\Format::$jsonEncodeDepth

Relacionado con:

CodeIgniter\Format\JSONFormatter.php

✅ Solución

Abrir:

app/Config/Format.php

y agregar las propiedades faltantes dentro de la clase Format.


✅ Configuración corregida

<?php

namespace Config;

use CodeIgniter\Config\BaseConfig;

class Format extends BaseConfig
{
    public array $supportedResponseFormats = [
        'application/json',
        'application/xml',
        'text/xml',
    ];

    public string $formatter = 'application/json';

    public array $formatters = [
        'application/json' => \CodeIgniter\Format\JSONFormatter::class,
        'application/xml'  => \CodeIgniter\Format\XMLFormatter::class,
        'text/xml'         => \CodeIgniter\Format\XMLFormatter::class,
    ];

    public int $jsonEncodeOptions =
        JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES;

    public bool $jsonDecodeAssociative = true;

    public int $jsonEncodeDepth = 512;

    public int $jsonDecodeDepth = 512;
}

🧹 Limpiar caché

Después de guardar cambios ejecutar:

php spark cache:clear

🔄 Reiniciar servicios

Si usas Apache, PHP-FPM o Docker:

sudo systemctl restart apache2

o el servicio correspondiente.


💡 Recomendación importante

Cada vez que actualices CodeIgniter 4:

  • ✅ compara tus archivos en:
app/Config/

contra los originales del framework:

vendor/codeigniter4/framework/app/Config/

porque muchas veces nuevas versiones agregan propiedades nuevas y los proyectos antiguos conservan configuraciones incompatibles.


🚀 Resultado

Después de agregar:

public int $jsonEncodeDepth = 512;

el error desaparece y las respuestas JSON vuelven a funcionar correctamente.


#CodeIgniter #PHP #CodeIgniter4 #PostgreSQL #MariaDB #Backend #WebDevelopment #Programacion #PHPDeveloper #OpenSource