====================================================
  DETALHES - Desafio Aula01 | NextGenPHP5
====================================================

----------------------------------------------------
1. Versão do PHP e Zend Engine
----------------------------------------------------
Comando para verificar:
  docker compose exec php php -v

Saída esperada (PHP 8.3 Alpine):
  PHP 8.3.x (cli) (built: ...)
  Copyright (c) The PHP Group
  Zend Engine v4.3.x, Copyright (c) Zend Technologies

----------------------------------------------------
2. Extensões instaladas
----------------------------------------------------
Comando para verificar:
  docker compose exec php php -m

Extensões padrão da imagem php:8.3-alpine:
  Core, ctype, curl, date, dom, fileinfo, filter,
  ftp, hash, iconv, json, libxml, mbstring, mysqlnd,
  openssl, pcre, PDO, pdo_sqlite, Phar, posix,
  readline, Reflection, session, SimpleXML, sodium,
  SPL, sqlite3, standard, tokenizer, xml, xmlreader,
  xmlwriter, zlib

----------------------------------------------------
3. Localização do php.ini no contêiner
----------------------------------------------------
Comando para verificar:
  docker compose exec php php --ini

Caminho do php.ini na imagem php:8.3-alpine:
  /usr/local/etc/php/php.ini

----------------------------------------------------
4. Substituição do php.ini interno por volume
----------------------------------------------------
Configurado no docker-compose.yml com o mapeamento:
  ./php.ini:/usr/local/etc/php/php.ini

O arquivo local ./php.ini substitui o php.ini
interno do contêiner via volume do Docker.

----------------------------------------------------
5. Horário padrão do PHP ajustado
----------------------------------------------------
Configuração aplicada em ./php.ini:
  date.timezone = America/Sao_Paulo

Verificar no contêiner:
  docker compose exec php php -r "echo date('d/m/Y H:i:s');"

----------------------------------------------------
6. Limite de memória aumentado para 512MB
----------------------------------------------------
Configuração aplicada em ./php.ini:
  memory_limit = 512M

Verificar no contêiner:
  docker compose exec php php -r "echo ini_get('memory_limit');"

Saída esperada: 512M

----------------------------------------------------
8. Correção do erro de exibição do projeto
----------------------------------------------------
Bug encontrado em ./index.php na função formatServices():

  ANTES (incorreto):
    return $services;   // retornava o array, não a string HTML

  DEPOIS (correto):
    return $servicesHtml;  // retorna a string HTML montada

Acessar o projeto em: http://localhost:8011

----------------------------------------------------
DESAFIO EXTRA 1: Versão da extensão pdo_sqlite
----------------------------------------------------
Comando para verificar:
  docker compose exec php php -r "
    \$pdo = new PDO('sqlite::memory:');
    \$stmt = \$pdo->query('SELECT sqlite_version()');
    echo 'SQLite version: ' . \$stmt->fetchColumn() . PHP_EOL;
    echo 'pdo_sqlite version acompanha SQLite: ' . phpversion('pdo_sqlite') . PHP_EOL;
  "

Alternativa via phpinfo:
  docker compose exec php php -r "phpinfo();" | grep -i sqlite

----------------------------------------------------
DESAFIO EXTRA 2: Compilar o PHP
----------------------------------------------------
Passos disponíveis em: ../README.md

Resumo:
  1. git clone --depth=1 git@github.com:php/php-src.git
  2. cd php-src && git checkout php-8.4.3
  3. docker compose up -d && docker compose exec ubuntu bash
  4. apt update && apt install -y pkg-config build-essential \
       autoconf bison re2c libxml2-dev libsqlite3-dev
  5. ./buildconf
  6. ./configure --enable-debug
  7. make -j$(nproc)
  8. make test
  9. make install

====================================================
  Para rodar o projeto
====================================================
  docker compose up -d
  Acesse: http://localhost:8011
====================================================
