"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > डीटीओ के साथ लारवेल में डेटा ट्रांसफर को सरल बनाना

डीटीओ के साथ लारवेल में डेटा ट्रांसफर को सरल बनाना

2024-11-07 को प्रकाशित
ब्राउज़ करें:870

Simplifying Data Transfer in Laravel with DTOs

यहां लारवेल डेटा का उपयोग करके डेटा ट्रांसफर ऑब्जेक्ट (डीटीओ) बनाने का चरण-दर-चरण उदाहरण दिया गया है:

1. लारवेल डेटा पैकेज स्थापित करें

शुरू करने के लिए, कंपोज़र का उपयोग करके स्पैटी/लारवेल-डेटा पैकेज इंस्टॉल करें। यह पैकेज डीटीओ बनाने और डेटा को कुशलतापूर्वक प्रबंधित करने में मदद करता है।

composer require spatie/laravel-data

2. डेटा ट्रांसफर ऑब्जेक्ट (डीटीओ) बनाएं

पैकेज स्थापित करने के बाद, हम डेटा ट्रांसफर को संभालने के लिए एक डीटीओ क्लास बना सकते हैं। मान लीजिए कि हमारे पास एक उपयोगकर्ता इकाई है, और हम उपयोगकर्ता डेटा स्थानांतरित करने के लिए एक डीटीओ बनाना चाहते हैं।

नया डीटीओ वर्ग उत्पन्न करने के लिए निम्नलिखित आर्टिसन कमांड चलाएँ:

php artisan make:data UserData

यह ऐप/डेटा निर्देशिका के अंदर एक यूजरडेटा क्लास बनाएगा।

3. डीटीओ में गुणों और प्रकारों को परिभाषित करें

अब, आइए अपने डीटीओ के लिए अपेक्षित गुणों और डेटा प्रकारों को परिभाषित करने के लिए यूजरडेटा क्लास को संपादित करें।

namespace App\Data;

use Spatie\LaravelData\Data;

class UserData extends Data
{
    public function __construct(
        public string $name,
        public string $email,
        public string $address,
        public ?string $phone = null  // Optional phone field
    ) {}
}

स्पष्टीकरण:

  • __construct विधि स्वचालित रूप से डीटीओ संपत्तियों को आने वाले मान निर्दिष्ट करती है।
  • ?string $phone = null इंगित करता है कि फ़ोन प्रॉपर्टी वैकल्पिक है।

4. नियंत्रक में डीटीओ का उपयोग करें

अब जब यूजरडेटा डीटीओ बन गया है, तो हम इसे अपने नियंत्रक के अंदर आने वाले डेटा को संभालने, इसे बदलने और एप्लिकेशन की परतों के बीच पास करने के लिए उपयोग कर सकते हैं।

namespace App\Http\Controllers;

use App\Data\UserData;
use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function store(Request $request)
    {
        // Validate the incoming request data
        $validatedData = $request->validate([
            'name' => 'required|string',
            'email' => 'required|email',
            'address' => 'required|string',
            'phone' => 'nullable|string',
        ]);

        // Create a UserData DTO
        $userData = UserData::from($validatedData);

        // You can now access $userData->name, $userData->email, etc.
        User::create([
            'name' => $userData->name,
            'email' => $userData->email,
            'address' => $userData->address,
            'phone' => $userData->phone,
        ]);

        return response()->json(['message' => 'User created successfully']);
    }
}

स्पष्टीकरण:

  • UserData::from() विधि स्वचालित रूप से मान्य अनुरोध डेटा को DTO ऑब्जेक्ट में मैप करती है।
  • डीटीओ ऑब्जेक्ट का उपयोग अब नियंत्रक और मॉडल (या एप्लिकेशन की अन्य परतों) के बीच डेटा स्थानांतरित करने के लिए किया जा सकता है।

5. डीटीओ का उपयोग करके डेटा ट्रांसफॉर्म करें

आप प्रतिक्रियाएं लौटाते समय डेटा बदलने के लिए भी डीटीओ का उपयोग कर सकते हैं। आइए DTO के माध्यम से उपयोगकर्ता डेटा वापस करने के लिए UserController में शो विधि को संशोधित करें।

public function show(User $user)
{
    // Convert the User model to UserData DTO
    $userData = new UserData(
        name: $user->name,
        email: $user->email,
        address: $user->address,
        phone: $user->phone
    );

    return response()->json($userData);
}

स्पष्टीकरण:

  • यहां, हम उपयोगकर्ता मॉडल के गुणों को डीटीओ कंस्ट्रक्टर में पास करके मैन्युअल रूप से एक यूजरडेटा डीटीओ बनाते हैं।
  • संरचित डेटा प्रारूप सुनिश्चित करते हुए, इस डीटीओ को सीधे JSON प्रतिक्रिया के रूप में लौटाया जा सकता है।

6. संग्रह के साथ डीटीओ

यदि आप डेटा के संग्रह के साथ काम कर रहे हैं, जैसे उपयोगकर्ताओं की सूची प्राप्त करना, तो डीटीओ पैकेज संग्रह को संभालने के लिए एक सरल विधि भी प्रदान करता है।

public function index()
{
    $users = User::all();

    // Convert the collection of User models to a collection of UserData DTOs
    $userCollection = UserData::collection($users);

    return response()->json($userCollection);
}

स्पष्टीकरण:

  • UserData::collection($users) विधि प्रत्येक उपयोगकर्ता मॉडल को UserData DTO में मैप करती है, पूरे संग्रह को DTO की सूची में बदल देती है।

7. डेटा परिवर्तन को अनुकूलित करें

स्पैटी/लारवेल-डेटा पैकेज परिवर्तन के अनुकूलन की अनुमति देता है, उदाहरण के लिए, विशेषताओं का नाम बदलना या गणना किए गए फ़ील्ड जोड़ना।

class UserData extends Data
{
    public function __construct(
        public string $name,
        public string $email,
        public string $address,
        public ?string $phone = null
    ) {}

    // Add a custom method to compute a full contact string
    public function fullContact(): string
    {
        return "{$this->name} ({$this->email})";
    }
}

अब, आप इस डीटीओ के साथ काम करते समय एक कस्टम स्वरूपित स्ट्रिंग प्राप्त करने के लिए फुलकॉन्टैक्ट() का उपयोग कर सकते हैं।

8. डेटा सत्यापन और डीटीओ

आप लारवेल डेटा के नियम सुविधा का उपयोग करके सीधे डीटीओ में सत्यापन नियम जोड़ सकते हैं।

namespace App\Data;

use Spatie\LaravelData\Attributes\Validation\Email;
use Spatie\LaravelData\Attributes\Validation\Required;
use Spatie\LaravelData\Data;

class UserData extends Data
{
    public function __construct(
        #[Required] public string $name,
        #[Email] public string $email,
        public string $address,
        public ?string $phone = null
    ) {}
}

स्पष्टीकरण:

  • #[आवश्यक] और #[ईमेल] जैसी सत्यापन विशेषताओं के साथ, आप सीधे डीटीओ स्तर पर सत्यापन लागू कर सकते हैं, जिससे प्रक्रिया और भी सरल हो जाएगी।

निष्कर्ष

इस व्यावहारिक ट्यूटोरियल में, हमने पता लगाया कि लारवेल डेटा का उपयोग करके डेटा ट्रांसफर ऑब्जेक्ट (डीटीओ) कैसे बनाएं और उपयोग करें। डीटीओ पैटर्न के साथ, आप अपने डेटा को साफ-सुथरे तरीके से प्रबंधित और परिवर्तित कर सकते हैं, जिससे आपके एप्लिकेशन की परतों के बीच चिंताओं को अलग करना सुनिश्चित हो सकता है, जबकि कोड को बनाए रखना आसान हो जाता है। स्पैटी/लारवेल-डेटा पैकेज डीटीओ प्रबंधन को सरल बनाता है, जो डेवलपर्स और बड़े पैमाने के अनुप्रयोगों दोनों के लिए उपयोग में आसान सुविधाएं प्रदान करता है।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/mbarifulhaque/simplifying-data-transfer-in-laravel-with-dtos-1il7?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3