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
Deja un comentario