برنامه نویسی

ایجاد برنامه های کاربردی دامنه متمرکز رویکرد سیمفونی (برگرداندن نتیجه)

Summarize this content to 400 words in Persian Lang

مقدمه

این آخرین مقاله از این مجموعه است. در مقاله قبلی ما یک سرویس کاربردی ایجاد کردیم که از آن استفاده می کرد UserEntityBuilder سرویس برای ایجاد موجودیت سپس، مدیریت نهاد دکترین (که یک سرویس زیرساختی است) برای تداوم و شستشوی موجودیت استفاده شد. اکنون زمان بازگرداندن یک نتیجه به لایه ارائه است.

مایلم به یاد داشته باشم که در تمام مقالات این مجموعه، نهادهای دکترین را به عنوان یک موجودیت دامنه در نظر گرفته ایم. من درک می کنم که این کاملاً صحیح نیست و بهتر است موجودیت های دامنه را از موجودیت های دکترین جدا کنیم، اما برای سادگی، این مقاله را با استفاده از موجودیت های دکترین به عنوان موجودیت های دامنه به پایان می برم.

من در حال آماده کردن یک مقاله جدید هستم که در آن نشان خواهم داد که چگونه یک برنامه کامل Symfony را ساختار داده ام و در آنجا خواهید دید که موجودیت های دامنه کاملاً از دکترین جدا شده اند.

ایجاد یک DTO خروجی و یک خروجی ساز

قبل از برگرداندن نتیجه به لایه ارائه، باید یک DTO ایجاد کنیم تا اطلاعاتی را که می‌خواهیم برگردانیم نشان دهیم. بیایید تصور کنیم که ما فقط می خواهیم آن را برگردانیم ایمیل، نام اول، نام خانوادگی و dob پارامترها خروجی DTO ما به صورت زیر است:

readonly class UserOutputDto {

public function __construct(
public string $email,
public string $firstName,
public string $lastName,
public string $dob,
){}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون که خروجی DTO آماده است، زمان ایجاد سرویسی برای ساخت خروجی از یک موجود است. این سرویس بخشی از دامنه ما خواهد بود زیرا ما تصمیم می‌گیریم چه اطلاعاتی بخشی از DTO خروجی باشد.

class UserOutputDTOBuilder {

public function build(User $user): UserOutputDto
{
return new UserOutputDto(
$user->getEmail(),
$user->getFirstName(),
$user->getLastName(),
$user->getDob()
);
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سازنده خروجی بسیار ساده است، a ایجاد می کند UserOutputDto انتقال پارامترها از مقادیر موجودیت به سازنده.

این سازنده خروجی می تواند بخشی از لایه برنامه یا ارائه باشد زیرا حاوی هیچ منطقی نیست اما من آن را همانطور که با UserEntityBuilder.به یاد داشته باشید که UserEntityBuilder حاوی منطق اضافی بود:

توکن را تولید کنید
مهر زمانی فعلی را ایجاد کنید

برگرداندن داده ها

با آماده بودن DTO خروجی، وقت آن است که آن را به سمت لایه ارائه هدایت کنید. در مورد ما، چه عناصری لایه ارائه را تشکیل می دهند؟ با در نظر گرفتن اینکه ما قصد داریم یک سیمفونی تولید کنیم JsonResponse و آن را به عنوان یک پاسخ HTTP برگردانید، کنترل کننده عنصری است که لایه ارائه ما را نشان می دهد. به آن برگردیم.

class ApiController extends AbstractController
{
#[Route(‘/api/entity’, name: ‘api_v1_post_entity’, methods: [‘POST’])] public function saveAction(Request $request, DataProcessor $dataProcessor, UserCreator $userCreator): JsonResponse
{
$userInputDto = $dataProcessor->processData($request->getContent(), UserInputDTO::class);
$userOutputDto = $userCreator->createUser($userInputDto);
return $this->json($userInputDto);
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به عنوان بخشی از لایه ارائه، کنترل کننده سیمفونی از بخش زیرساخت خود استفاده می کند (the AbstractController json تابع) برای تولید JsonResponse از داده‌های DTO خروجی آماده برای بازگرداندن در یک پاسخ HTTP.همانطور که می بینید، کنترلر سیمفونی از سرویس های کاربردی دیگر نیز استفاده می کند (پردازشگر داده و UserCreator) برای انجام فرآیند فراخوانی API.

نتیجه گیری

در این مقاله پایانی از این سری، فرآیند بازگرداندن داده ها به لایه ارائه در یک برنامه Symfony را بررسی کردیم. ما با ایجاد یک شیء انتقال داده خروجی (DTO) شروع کردیم تا داده‌های کاربری را که می‌خواستیم برگردانیم، به‌ویژه ایمیل، نام، نام خانوادگی و تاریخ تولد، کپسوله کنیم. سپس a را توسعه دادیم UserOutputDTOBuilder سرویس ساخت این DTO از موجودیت کاربر، با تأکید بر اهمیت تعریف اطلاعاتی که در خروجی گنجانده شده است. در نهایت، ما نشان دادیم که چگونه کنترلر Symfony به عنوان لایه ارائه عمل می کند و از آن استفاده می کند JsonResponse قابلیت برگرداندن داده های DTO به عنوان پاسخ HTTP.

مقدمه

این آخرین مقاله از این مجموعه است. در مقاله قبلی ما یک سرویس کاربردی ایجاد کردیم که از آن استفاده می کرد UserEntityBuilder سرویس برای ایجاد موجودیت سپس، مدیریت نهاد دکترین (که یک سرویس زیرساختی است) برای تداوم و شستشوی موجودیت استفاده شد.
اکنون زمان بازگرداندن یک نتیجه به لایه ارائه است.

مایلم به یاد داشته باشم که در تمام مقالات این مجموعه، نهادهای دکترین را به عنوان یک موجودیت دامنه در نظر گرفته ایم. من درک می کنم که این کاملاً صحیح نیست و بهتر است موجودیت های دامنه را از موجودیت های دکترین جدا کنیم، اما برای سادگی، این مقاله را با استفاده از موجودیت های دکترین به عنوان موجودیت های دامنه به پایان می برم.

من در حال آماده کردن یک مقاله جدید هستم که در آن نشان خواهم داد که چگونه یک برنامه کامل Symfony را ساختار داده ام و در آنجا خواهید دید که موجودیت های دامنه کاملاً از دکترین جدا شده اند.

ایجاد یک DTO خروجی و یک خروجی ساز

قبل از برگرداندن نتیجه به لایه ارائه، باید یک DTO ایجاد کنیم تا اطلاعاتی را که می‌خواهیم برگردانیم نشان دهیم. بیایید تصور کنیم که ما فقط می خواهیم آن را برگردانیم ایمیل، نام اول، نام خانوادگی و dob پارامترها خروجی DTO ما به صورت زیر است:

readonly class UserOutputDto {

    public function __construct(
        public string $email,
        public string $firstName,
        public string $lastName,
        public string $dob,
    ){}
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون که خروجی DTO آماده است، زمان ایجاد سرویسی برای ساخت خروجی از یک موجود است. این سرویس بخشی از دامنه ما خواهد بود زیرا ما تصمیم می‌گیریم چه اطلاعاتی بخشی از DTO خروجی باشد.

class UserOutputDTOBuilder {

    public function build(User $user): UserOutputDto
    {
        return new UserOutputDto(
            $user->getEmail(),
            $user->getFirstName(),
            $user->getLastName(),
            $user->getDob()
        );
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سازنده خروجی بسیار ساده است، a ایجاد می کند UserOutputDto انتقال پارامترها از مقادیر موجودیت به سازنده.

این سازنده خروجی می تواند بخشی از لایه برنامه یا ارائه باشد زیرا حاوی هیچ منطقی نیست اما من آن را همانطور که با UserEntityBuilder.
به یاد داشته باشید که UserEntityBuilder حاوی منطق اضافی بود:

  • توکن را تولید کنید
  • مهر زمانی فعلی را ایجاد کنید

برگرداندن داده ها

با آماده بودن DTO خروجی، وقت آن است که آن را به سمت لایه ارائه هدایت کنید. در مورد ما، چه عناصری لایه ارائه را تشکیل می دهند؟ با در نظر گرفتن اینکه ما قصد داریم یک سیمفونی تولید کنیم JsonResponse و آن را به عنوان یک پاسخ HTTP برگردانید، کنترل کننده عنصری است که لایه ارائه ما را نشان می دهد. به آن برگردیم.

class ApiController extends AbstractController
{
    #[Route('/api/entity', name: 'api_v1_post_entity', methods: ['POST'])]
    public function saveAction(Request $request, DataProcessor $dataProcessor, UserCreator $userCreator): JsonResponse
    {
        $userInputDto = $dataProcessor->processData($request->getContent(), UserInputDTO::class);
        $userOutputDto = $userCreator->createUser($userInputDto);
        return $this->json($userInputDto);
    }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به عنوان بخشی از لایه ارائه، کنترل کننده سیمفونی از بخش زیرساخت خود استفاده می کند (the AbstractController json تابع) برای تولید JsonResponse از داده‌های DTO خروجی آماده برای بازگرداندن در یک پاسخ HTTP.
همانطور که می بینید، کنترلر سیمفونی از سرویس های کاربردی دیگر نیز استفاده می کند (پردازشگر داده و UserCreator) برای انجام فرآیند فراخوانی API.

نتیجه گیری

در این مقاله پایانی از این سری، فرآیند بازگرداندن داده ها به لایه ارائه در یک برنامه Symfony را بررسی کردیم. ما با ایجاد یک شیء انتقال داده خروجی (DTO) شروع کردیم تا داده‌های کاربری را که می‌خواستیم برگردانیم، به‌ویژه ایمیل، نام، نام خانوادگی و تاریخ تولد، کپسوله کنیم. سپس a را توسعه دادیم UserOutputDTOBuilder سرویس ساخت این DTO از موجودیت کاربر، با تأکید بر اهمیت تعریف اطلاعاتی که در خروجی گنجانده شده است.
در نهایت، ما نشان دادیم که چگونه کنترلر Symfony به عنوان لایه ارائه عمل می کند و از آن استفاده می کند JsonResponse قابلیت برگرداندن داده های DTO به عنوان پاسخ HTTP.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا