লারাভেল (Laravel) একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা ডেভেলপারদের অ্যাপ্লিকেশন তৈরির সময় বিভিন্ন টুলস এবং ফিচার প্রদান করে। এর মধ্যে একটি গুরুত্বপূর্ণ ফিচার হলো মিউটেটর (Mutator) এবং কাস্ট (Cast)। এই ফিচারগুলো ব্যবহার করে আপনি ডাটাবেইজের মধ্যে থাকা ডেটার রূপান্তর বা পরিবর্তন সহজে করতে পারেন, যা আপনাকে ডেটার ভ্যালু সংরক্ষণ বা পাওয়ার সময় বিভিন্ন ধরনের কাস্টমাইজেশন করতে সহায়তা করে।
মিউটেটর হল এমন একটি ফিচার যা মডেল (Model) এর মধ্যে ডেটার মান সেট করার আগে বা আপডেট করার সময় অটোমেটিকভাবে ডেটা প্রক্রিয়া বা পরিবর্তন করে। যখন আপনি কোনো মডেল এর প্রপার্টি সেট করেন, তখন মিউটেটর তা প্রক্রিয়া করে এবং নতুন মান সেট করে।
লারাভেলে মিউটেটর তৈরি করতে হলে, মডেল ক্লাসে একটি বিশেষ মেথড তৈরি করতে হয়। এই মেথডটি set{Attribute}Attribute
নামে হবে, যেখানে {Attribute}
হলো সেই প্রপার্টির নাম যার জন্য আপনি মিউটেটর তৈরি করতে চান।
উদাহরণস্বরূপ, যদি আপনি চান যে ব্যবহারকারীর নামটি সঠিকভাবে কিপ-টু-কেস (uppercase) এ স্টোর হোক, তাহলে আপনাকে মিউটেটর তৈরি করতে হবে:
class User extends Model
{
// মিউটেটর: নামটি কিপ-টু-কেস হিসেবে সেট করা হবে
public function setNameAttribute($value)
{
$this->attributes['name'] = ucwords(strtolower($value));
}
}
এখানে, setNameAttribute
মেথডটি ব্যবহারকারীর নামটি গ্রহণ করবে, তা ছোট অক্ষরে রূপান্তরিত করবে এবং প্রথম অক্ষর বড় (uppercase) করবে।
কাস্ট হল একটি সুবিধা যা ডেটাবেইজ থেকে ডেটা পাওয়ার সময় বা সেট করার সময় এটি একটি নির্দিষ্ট ডেটা টাইপে কনভার্ট করে দেয়। এটি ডেটাকে নির্দিষ্ট একটি টাইপে রূপান্তরিত করে, যেমন একটি স্ট্রিংকে ইনটিজারে, বা একটি ডেটাকে ডেটটাইম ইনস্ট্যান্সে রূপান্তর করা।
লারাভেল কাস্ট করার জন্য আপনি মডেল ক্লাসে $casts
প্রপার্টি ব্যবহার করেন। এই প্রপার্টি একটি অ্যারে হিসেবে ডেটা টাইপ কাস্টিং নির্দেশ করে।
উদাহরণস্বরূপ, যদি আপনি চান যে একটি created_at
ফিল্ড স্বয়ংক্রিয়ভাবে একটি Carbon
ডেটটাইম ইনস্ট্যান্সে কাস্ট হয়ে যাক:
class Post extends Model
{
protected $casts = [
'created_at' => 'datetime',
];
}
এখানে, created_at
ফিল্ডটি একটি ডেটাবেইজ ফিল্ড হিসেবে স্টোর হওয়া সত্ত্বেও, যখন আপনি এই ফিল্ডটি অ্যাক্সেস করবেন, এটি একটি Carbon
ডেটটাইম অবজেক্ট হিসেবে রিটার্ন হবে। এর ফলে আপনি সরাসরি ডেটা থেকে ডেটটাইম সম্পর্কিত বিভিন্ন ফাংশন ব্যবহার করতে পারবেন।
লারাভেলে কিছু সাধারণ কাস্ট টাইপ রয়েছে যেগুলি আপনি $casts
প্রপার্টিতে ব্যবহার করতে পারেন:
class Post extends Model
{
protected $casts = [
'is_active' => 'boolean',
'tags' => 'array',
'published_at' => 'datetime',
];
}
এখানে:
is_active
ফিল্ডটি একটি বুলিয়ান ভ্যালু হিসেবে কাস্ট হবে।tags
ফিল্ডটি একটি অ্যারে টাইপ হিসেবে কাস্ট হবে।published_at
ফিল্ডটি একটি ডেটটাইম অবজেক্টে কাস্ট হবে।লারাভেল মিউটেটর এবং কাস্ট আপনাকে ডেটা সেট করার এবং অ্যাক্সেস করার সময় ডেটার প্রক্রিয়াজাতকরণ এবং রূপান্তর সহজ করে তোলে। মিউটেটরগুলি ডেটা সেট করার সময় কাস্টম লজিক প্রয়োগ করতে সহায়তা করে, এবং কাস্ট ডেটাবেইজ থেকে ডেটা পেতে সময় ডেটার টাইপ রূপান্তর সহজ করে তোলে। এই দুটি ফিচার ব্যবহারের মাধ্যমে আপনি কোডকে আরও পরিষ্কার, কার্যকরী, এবং রিয়ুসেবল করতে পারবেন।