@@ -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