यहां लारवेल डेटा का उपयोग करके डेटा ट्रांसफर ऑब्जेक्ट (डीटीओ) बनाने का चरण-दर-चरण उदाहरण दिया गया है:
शुरू करने के लिए, कंपोज़र का उपयोग करके स्पैटी/लारवेल-डेटा पैकेज इंस्टॉल करें। यह पैकेज डीटीओ बनाने और डेटा को कुशलतापूर्वक प्रबंधित करने में मदद करता है।
composer require spatie/laravel-data
पैकेज स्थापित करने के बाद, हम डेटा ट्रांसफर को संभालने के लिए एक डीटीओ क्लास बना सकते हैं। मान लीजिए कि हमारे पास एक उपयोगकर्ता इकाई है, और हम उपयोगकर्ता डेटा स्थानांतरित करने के लिए एक डीटीओ बनाना चाहते हैं।
नया डीटीओ वर्ग उत्पन्न करने के लिए निम्नलिखित आर्टिसन कमांड चलाएँ:
php artisan make:data UserData
यह ऐप/डेटा निर्देशिका के अंदर एक यूजरडेटा क्लास बनाएगा।
अब, आइए अपने डीटीओ के लिए अपेक्षित गुणों और डेटा प्रकारों को परिभाषित करने के लिए यूजरडेटा क्लास को संपादित करें।
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 ) {} }
अब जब यूजरडेटा डीटीओ बन गया है, तो हम इसे अपने नियंत्रक के अंदर आने वाले डेटा को संभालने, इसे बदलने और एप्लिकेशन की परतों के बीच पास करने के लिए उपयोग कर सकते हैं।
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']); } }
आप प्रतिक्रियाएं लौटाते समय डेटा बदलने के लिए भी डीटीओ का उपयोग कर सकते हैं। आइए 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); }
यदि आप डेटा के संग्रह के साथ काम कर रहे हैं, जैसे उपयोगकर्ताओं की सूची प्राप्त करना, तो डीटीओ पैकेज संग्रह को संभालने के लिए एक सरल विधि भी प्रदान करता है।
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); }
स्पैटी/लारवेल-डेटा पैकेज परिवर्तन के अनुकूलन की अनुमति देता है, उदाहरण के लिए, विशेषताओं का नाम बदलना या गणना किए गए फ़ील्ड जोड़ना।
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})"; } }
अब, आप इस डीटीओ के साथ काम करते समय एक कस्टम स्वरूपित स्ट्रिंग प्राप्त करने के लिए फुलकॉन्टैक्ट() का उपयोग कर सकते हैं।
आप लारवेल डेटा के नियम सुविधा का उपयोग करके सीधे डीटीओ में सत्यापन नियम जोड़ सकते हैं।
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 ) {} }
इस व्यावहारिक ट्यूटोरियल में, हमने पता लगाया कि लारवेल डेटा का उपयोग करके डेटा ट्रांसफर ऑब्जेक्ट (डीटीओ) कैसे बनाएं और उपयोग करें। डीटीओ पैटर्न के साथ, आप अपने डेटा को साफ-सुथरे तरीके से प्रबंधित और परिवर्तित कर सकते हैं, जिससे आपके एप्लिकेशन की परतों के बीच चिंताओं को अलग करना सुनिश्चित हो सकता है, जबकि कोड को बनाए रखना आसान हो जाता है। स्पैटी/लारवेल-डेटा पैकेज डीटीओ प्रबंधन को सरल बनाता है, जो डेवलपर्स और बड़े पैमाने के अनुप्रयोगों दोनों के लिए उपयोग में आसान सुविधाएं प्रदान करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3