값 개체 e DDD

Domain-Driven Design é uma metodologia de desenvolvimento de software que enfatiza a importância dos domínios para fornecer sistemas mais bem projetados e holísticos. O coração do Domain-Driven Design é a ideia de criar e trabalhar com\"modelos de domínio\". Um modelo de domínio é uma는 실제 세계의 objetos de um domínio do orientada를 나타냅니다. Um conceito chave no Domain-Driven Design é a ideia de um objeto de valor. Um objeto de valor é um objeto que Representativea um valor em vez de uma entidade ou uma coleção de entidades. 예를 들어, em um aplicativo de varejo, o objeto que는 compra de um cliente pode ser um objeto de valor를 나타냅니다. Há vários benefícios de usar objetos de valor em seus modelos de domínio. Primeiro, os objetos de valor a judam a simplificar seu modelo de domínio. Eles fornecem uma maneira mais compacta de representationar dados e podem ajudar a reduzir a complexidade do seu código. Em segundo lugar, ao Representative valores em vez de entidades ou coleções de entidades, os objetos de valor ajudam você a se concentrar nos aspectos Importantes do seu domínio. Terceiro, os objetos de valor podem ajudá-lo a impor regras e invariantes de negócios. Por fim, os objetos de valor podem ajudar você a otimizar o desempenho e manutenção do seu sistema. Há algumas coisas a serem lembradas ao trabalhar com objetos de valor.

Primeiro, você precisa ter certeza de que seus objetos de valor são imutáveis. Isso ajuda a garantir que sejam thread-safe e que seu estado seja semper consistente.

Em segundo lugar, você precisa ter certeza de que seus objetos de valor são serializáveis. Isso permite que eles sejam transmissionidos entre diferentes partes do seu sistema sem problemas.

Tipos primitivos são a base da maioria das linguagens de programação. No entanto, os tipos personalizados podem fornecer mais funcionalidade e ser mais expressivos. PHP는 CPF를 대표하는 기본 문자열 포드가 아닌 값 개체 "CpfValueObject"로 대체할 수 있는 포드가 없습니다. CpfValueObject 의 가치 개체 포드에는 유형 문자열에 대한 재귀가 포함됩니다. 예를 들어, CpfValueObject 팟에는 cpf에 대한 절대 값 또는 절대 값이 포함되며, 이는 특히 도메인 요청에 대한 협상에 의존합니다. Outra vantagem de usar objetos de valor é que ele pode tornar o código mais legível. Por exemplo abaixo um objeto de valor
cpf de um domínio 사용자/

<?php

namespace App\Users\ValueObjects;

use Stringable;

class Cpf implements Stringable
{
   private string $cpf;

   public function __construct(string $cpf)
   {
       $this->setNumber($cpf);
   }

   private function setNumber(string $cpf): void
   {
      $opcoes = [
           'options' => [
               'regexp' => '/\d{3}\.\d{3}\.d{3}\-\d{2}/'
           ]
       ];

       if(filter_var($cpf, FILTER_VALIDATE_REGEXP, $opcoes) === false) {
           throw new \InvalidArgumentException('CPF inválido');
       }

       $this->cpf = $cpf;
   }

   public function __toString(): string
   {
       return $this->cpf;
   }
}

좋은 웹페이지 즐겨찾기