تکنولوژی نوین اینترنتی
در لاراول، Mutators و Accessors ابزارهای قدرتمندی هستند که به شما اجازه میدهند تا قبل از ذخیره یا پس از دریافت دادهها از پایگاه داده، به راحتی دادهها را دستکاری کنید. اینها در واقع متدهایی هستند که به شما این امکان رو میدهند که رفتار فیلدهای مدلها رو تغییر بدید.
Accessors به شما این امکان رو میدهند که قبل از نمایش مقدار یک فیلد از مدل (وقتی دادهها رو از پایگاه داده دریافت میکنید)، مقدار اون رو تغییر بدید. مثلاً میتونید یک فیلد تاریخ یا یک مقدار خاص رو به فرمت دلخواه خودتون تبدیل کنید.
برای تعریف یک Accessor، باید یک متد در مدل خود با نام get{AttributeName}Attribute
ایجاد کنید. در اینجا {AttributeName}
باید به شکل camelCase نام فیلد باشد.
full_name
فرض کنید که در مدل User، دو فیلد first_name
و last_name
وجود دارد و میخواهید این دو فیلد را در قالب یک فیلد واحد به نام full_name
نمایش دهید.
حالا وقتی که دادههای کاربر رو دریافت کنید، میتوانید به راحتی از full_name
استفاده کنید:
Mutators به شما این امکان رو میدهند که قبل از ذخیره دادهها در پایگاه داده، مقدار فیلد را تغییر بدید. مثلاً میخواهید همهی مقادیر یک فیلد خاص رو قبل از ذخیره به حالت خاصی تبدیل کنید، مثل تغییر همهی حروف به حروف کوچک یا رمزگذاری یک پسورد.
برای تعریف یک Mutator، باید یک متد در مدل خود با نام set{AttributeName}Attribute
ایجاد کنید. در اینجا {AttributeName}
باید به شکل camelCase نام فیلد باشد.
password
فرض کنید که میخواهید پسورد کاربر رو قبل از ذخیره در پایگاه داده، رمزنگاری کنید:
حالا وقتی که پسورد رو به مدل ارسال کنید، به صورت خودکار رمزنگاری میشود:
در اینجا پسورد "secret" قبل از ذخیره شدن در پایگاه داده به صورت خودکار با استفاده از تابع bcrypt
رمزنگاری خواهد شد.
در لاراول، میتوانید از Accessors و Mutators به طور همزمان استفاده کنید تا به راحتی دادهها را قبل از ذخیره یا پس از دریافت تغییر دهید.
phone_number
مثلاً اگر بخواهید هنگام ذخیره کردن شماره تلفن، شماره رو به فرمت خاصی ذخیره کنید (مثلاً حذف فاصلهها)، و وقتی که شماره رو فراخوانی میکنید، به فرمت مناسبتری نمایش داده بشه:
حالا وقتی شماره تلفن رو به مدل ارسال کنید، هر چیزی که غیر از اعداد باشه حذف میشود و وقتی که شماره تلفن رو دریافت کنید، به فرمت دلخواه نمایش داده میشود:
Accessors و Mutators فقط برای دستکاری مقادیر مدلها قبل از ذخیره یا پس از دریافت هستند. شما نمیتوانید از آنها برای دستکاری مقادیر فیلدهای دیگر استفاده کنید.
نامگذاری صحیح: در نامگذاری Accessor و Mutator دقت کنید که از camelCase استفاده کنید و از get
برای Accessor و set
برای Mutator استفاده کنید.
استفاده از Accessors در هنگام تغییر دادهها: شما میتوانید به راحتی دادهها را به فرمت دلخواه تغییر دهید، بدون اینکه نیاز به تغییر دادهها در لایههای مختلف اپلیکیشن داشته باشید.
ویژگی | توضیح |
---|---|
Accessors | متدهایی که قبل از نمایش دادهها، مقادیر فیلدها رو تغییر میدهند (مثلاً تغییر فرمت تاریخ یا ترکیب فیلدها). |
Mutators | متدهایی که قبل از ذخیرهسازی دادهها در پایگاه داده، مقادیر فیلدها رو تغییر میدهند (مثلاً رمزنگاری پسورد). |
این ویژگیها به شما کمک میکنند که در لاراول به راحتی دادهها رو مدیریت کنید و از نوشتن کدهای تکراری برای تغییر مقادیر جلوگیری کنید. اگر سوالی داشتید، خوشحال میشم کمک کنم!