Skip to content

Commit a2cc0b5

Browse files
committed
feat: Constructo page improvements
1 parent 1e45b1c commit a2cc0b5

2 files changed

Lines changed: 49 additions & 29 deletions

File tree

src/components/Footer.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,7 @@ const Footer = () => {
175175

176176
<div className="border-t border-border pt-6 flex flex-col lg:flex-row justify-between items-center">
177177
<p className="text-muted-foreground text-xs py-2">
178-
© {new Date().getFullYear()} Devitools. Desenvolvido com{" "}
179-
<Heart className="w-4 h-4 inline mx-1 text-accent" /> pela comunidade.
178+
© {new Date().getFullYear()} Devitools | desenvolvido no 🇧🇷 com 💖️ pela comunidade
180179
</p>
181180

182181
{/* Link para o repositório */}

src/pages/Constructo.tsx

Lines changed: 48 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@ const Constructo = () => {
2626
const features = [
2727
{
2828
icon: <Blocks className="w-6 h-6 text-constructo-foreground" />,
29-
title: "Serialização Inteligente",
30-
description:
31-
"Converta objetos para arrays/JSON e vice-versa automaticamente com validação integrada",
29+
title: "Codec Inteligente",
30+
description: "Converta objetos para arrays e vice-versa sem nenhuma configuração",
3231
},
3332
{
3433
icon: <Database className="w-6 h-6 text-constructo-foreground" />,
@@ -209,45 +208,67 @@ const Constructo = () => {
209208
<div className="max-w-6xl mx-auto">
210209
<Tabs defaultValue="container" className="w-full">
211210
<TabsList>
212-
<TabsTrigger value="container">Container DI</TabsTrigger>
213-
<TabsTrigger value="serialization">Serialização</TabsTrigger>
211+
<TabsTrigger value="container">Serialização</TabsTrigger>
212+
<TabsTrigger value="serialization">Desserialização</TabsTrigger>
214213
<TabsTrigger value="validation">Validação</TabsTrigger>
215214
<TabsTrigger value="testing">Testes</TabsTrigger>
216215
</TabsList>
217216

218217
<TabsContent value="container">
219218
<Card>
220219
<CardHeader>
221-
<CardTitle>Container de Injeção de Dependências</CardTitle>
220+
<CardTitle>Serialização inteligente</CardTitle>
222221
<CardDescription>
223-
Configure e use o container PSR-11 para gerenciar dependências
222+
Apenas defina os tipos dos argumentos do construtor que sua classe deve
223+
receber e deixa o resto com o Builder
224224
</CardDescription>
225225
</CardHeader>
226226
<CardContent>
227227
<CodeBlock language="php">
228228
{`<?php
229-
use Devitools\\Constructo\\Container;
230-
use Devitools\\Constructo\\Configuration;
231-
232-
// Configuração do container
233-
$config = new Configuration([
234-
'database' => [
235-
'host' => 'localhost',
236-
'driver' => 'mysql'
237-
],
238-
'cache' => [
239-
'driver' => 'redis',
240-
'ttl' => 3600
241-
]
242-
]);
229+
# ...
230+
use Constructo\\Core\\Serialize\\Builder;
231+
use Constructo\\Support\\Set;
232+
use Constructo\\Type\\Timestamp;
243233
244-
// Container de dependências
245-
$container = new Container($config);
246-
$container->singleton(DatabaseService::class);
247-
$container->bind(CacheInterface::class, RedisCache::class);
234+
// Defina sua entidade informando os valores das propriedades no construtor
235+
readonly class User
236+
{
237+
public function __construct(
238+
public int $id,
239+
public string $name,
240+
public Timestamp $birthDate,
241+
public bool $isActive = true,
242+
public array $tags = [],
243+
) {}
244+
}
245+
246+
// Monte um set com os dados (de JSON, banco de dados, etc.)
247+
$set = Set::createFrom([
248+
'id' => 1,
249+
'name' => 'João Silva',
250+
'birth_date' => '1981-08-13',
251+
'is_active' => true,
252+
'tags' => ['nice', 'welcome'],
253+
]);
248254
249-
// Resolução automática com injeção
250-
$service = $container->resolve(UserService::class);`}
255+
// Crie um novo builder e use-o para construir o objeto
256+
$user = (new Builder())->build(User::class, $set);
257+
258+
echo "Usuário: \\n";
259+
echo sprintf(" ID: %s\\n", $user->id);
260+
echo sprintf(" Nome: %s\\n", $user->name);
261+
echo sprintf(" Ativo: %s\\n", $user->isActive ? 'Sim' : 'Não');
262+
echo sprintf(" Tags: %s\\n", implode(', ', $user->tags));
263+
echo sprintf(" Data de Nascimento: %s\\n", $user->birthDate->format('Y-m-d'));
264+
265+
# Usuário:
266+
# ID: 1
267+
# Nome: João Silva
268+
# Ativo: Sim
269+
# Tags: nice, welcome
270+
# Data de Nascimento: 1981-08-13
271+
`}
251272
</CodeBlock>
252273
</CardContent>
253274
</Card>

0 commit comments

Comments
 (0)