🌙
Luna - Framework PHP
  • Conheça o Luna
  • Notas de atualizações
  • Iniciando
    • Instalação
    • Configuração
    • Exemplo
  • O básico
    • Routers
    • Middlewares
    • Cache
    • Controllers
    • Services
    • Helpers
    • Views
    • Flash Messages
    • Components
    • Pagination
    • Database
    • Models
    • SEO
    • Environment
Powered by GitBook
On this page
  • v1.0.5
  • Renderização múltipla de componentes
  • Melhoria de renderização de array
  • Envio de variáveis em getPage()
  • v1.0.4
  • Compatibilidade com PHP 8
  • Remoção de uso de funções nativas para gerenciamento de Environment
  • v1.0.3
  • Search Engine Optimization (SEO)
  • Alteração na renderização da página
  • Definições de variáveis em arquivo isolado
  • Correções de erros
  • v1.0.2
  • Flash Messages
  • v1.0.1
  • Funções para obter parâmetros e outros dados da requisição atualizadas:
  • Alias para método de resposta
  • v1.0

Notas de atualizações

PreviousConheça o LunaNextInstalação

Last updated 1 year ago

Nova função multiRender() para renderização múltipla de componentes semelhantes com dados diferentes utilizando um array numérico.

Antes:

$products = ProductService::list();
$productElements = "";
foreach($products as $product) {
    $productElements .= Component::render('product-box', $product);
}
return $productElements;

Agora:

$products = ProductService::list();
return Component::multiRender('product-box', $products);

Buscando uma melhor forma de renderizar views e components utilizando um array, agora é possível acessar valores em diferentes níveis, como por exemplo, para renderizar o valor de $product['category']['name'] :

Antes:

<h1>{{name}}</h1>
<h2>{{categoryName}}</h2>
$product['categoryName'] = $product['category']['name']; // 😫
$content = View::render('product', $product);

Agora:

<h1>{{name}}</h1>
<h2>{{category->name}}</h2>
$content = View::render('product', $product);

Resultado:

<h1>Produto Nome</h1>
<h2>Categoria Nome</h2>

Os valores podem ser acessados utilizando ->, para acessar $product['category']['icon']['full'] por exemplo, deve-se utilizar {{category->icon->full}}.

Para melhorar a renderização da função getPage(), agora a variável $opts pode receber múltiplos itens, anteriormente era possível utilizar apenas os valores para header, footer e seo. Essa atualização permite que valores de variáveis para renderização da página sejam enviados corretamente.

A função setConfigs() do arquivo app/Db/Database.php foi levemente corrigida para que seja utilizada corretamente como Static e resolver o erro que ocorria ao tentar utilizar o Luna no PHP 8 em diante.

O erro não ocorre nas versões do PHP 7

Buscando evitar problemas com servidores ou erros de gerenciamento de valores nativos do PHP, a classe Environment sofreu alterações para utilizar a variável global $_ENV ao invés das funções nativas putenv() ou getenv().

Com a alteração, os valores informados no arquivo .env agora devem ser obtidos utilizando a classe:

use \App\Common\Environment as Env;

Env::get($key); // Obter item específico
Env::get(); // Obter todos os items

Todas as classes e arquivos do Luna que utilizavam as funções nativas foram modificadas para utilizar a classe atualizada.

Configurações de SEO fácil e rápida na renderização da página ou view:

$seo = new Seo();
$seo->setTitle("Produto nome");
$seo->setDescription("Produto descrição");
$seo->setKeywords(["produto-chave-1", "produto-chave-2"]);

O header e footer agora fazem parte de um array de configurações opcionais. A alteração ocorreu devido a necessidade de novas informações na renderização da página, como o SEO:

Antes:

$content = parent::getPage("Página administrativa", $content, 'header-admin', 'footer-admin');

Depois:

$content = parent::getPage("Página administrativa", $content, [
    'header' => 'header-admin',
    'footer' => 'footer-admin'
]);

Para evitar que, em etapa de desenvolvimento ou de manutenções, o arquivo index.php sofresse modificações, as configurações das variáveis padrões das views (antigo View::init) View::define e as variáveis das flash messages Flash::define foram movidas para o arquivo define.php, isolando o arquivo para exclusivamente definições de variáveis e permitindo que o arquivo index.php não exija alterações durante o desenvolvimento.

Correções de erros

Quando uma páginação estava vazia (zero itens resultantes) a renderização da páginação era problemática, uma simples correção de retorno resolveu o problema.

Os headers do retorno da requisição não eram corretamente enviados devido ao uso incorreto da variável $this->headers.

Alguns avisos (WARNING ou ALERT) geram logs desnecessários, algumas correções foram realizadas para que não ocorra, como:

  • Variável $response definida previamente no método next de Middleware.php;

  • Definição de variáveis de ambiente do arquivo .env corrigidas em caso de linha em branco para evitar o uso do método putenv em strings vazias;

  • Correção de uso da string DEFAULT_CONTENT_TYPE de variável para string, o aviso poderia se tornar um erro fatal em futuras atualizações do PHP.

Criação e renderização de flash messages na view:

Flash::create("productNotFound", "Produto não encontrado", FLASH_DANGER);
$flash = Flash::render("productNotFound");
$req->header(); // getHeaders();
$req->query();  // getQueryParams();
$req->body();   // getPostVars();
$req->param();  // getPathParams();

Agora também é possível obter um parâmetro específico utilizando o método:

// ?id=1
$id = $req->query('id');
var_dump($id); // 1

As classes Pagination e Cache foram atualizadas para suportar as atualizações.

As respostas do $response agora podem conter alias para facilitar a definição:

$res->send(200, $content, 'json');
// $res->send(200, $content, 'application/json');
$res->send(200, $content, 'html');
// $res->send(200, $content, 'text/html');

O padrão de retorno continua sendo text/html e pode ser alterado no .env em DEFAULT_CONTENT_TYPE` .

Versão estável inicial do Luna.

Leia a documentação .

Leia a documentação .

Leia a documentação .

Leia a documentação .

v1.0.5
Renderização múltipla de componentes
Melhoria de renderização de array
Envio de variáveis em getPage()
v1.0.4
Compatibilidade com PHP 8
Remoção de uso de funções nativas para gerenciamento de Environment
v1.0.3
Search Engine Optimization (SEO)
aqui
Alteração na renderização da página
Definições de variáveis em arquivo isolado
Paginação com zero itens
Envio de headers no response
Avisos do PHP
v1.0.2
Flash Messages
aqui
v1.0.1
Funções para obter parâmetros e outros dados da requisição atualizadas:
Alias para método de resposta
v1.0
aqui
aqui