گسترش کالکشن‌های لاراول با استفاده از ماکروها

طراحی سایت

..گسترش کالکشن‌های لاراول با استفاده از ماکروها..
طراحی سایت

گسترش کالکشن‌های لاراول با استفاده از ماکروها

کالکشن‌ها جزء ویژگی‌های خارق العاده لاراول هستند. با استفاده از توابعی که کالکشن‌ها ارائه می‌دهند ما می‌توانیم به سادگی هر نیاز مرتبط با دیتابیس را مدیریت کنیم، اما هنوز در برخی موارد ما نیاز داریم که آن‌ها را با استفاده از توابع سفارشی شده گسترش دهیم.

مفهوم ماکرو

 ماکرو یکی از ویژگی‌های قدرتمند لاراول است که به شما اجازه می‌دهد که توابع سفارشی شده را به اجزاء مختلف لاراول اضافه کنید. در مقاله های قبل به توضیح ماکروrequest و response پرداخته شد، در ادامه به توضیح چگونگی گسترش کالکشن‌ها با استفاده از ماکروها می‌پردازیم.

Collection::macro('name', function () {     // Add functionality here });

توجه: شما می‌توانید ماکروی خود را درAppServiceProviders یا هرserviceproviders  دیگری تعریف کنید.

همانطور که دیدید، ما کلمه‌ی name را به عنوان اولین پارامتر تعریف کردیم سپس ما یک تابع را به عنوان پارامتر دوم قرار دادیم، در ادامه ما می‌توانید به سادگی متد جدید خود را بر روی کالکشن استفاده کنیم:

$items = collect([1, 2, 3]); $items->name();

تا این‌جا ما با اصول اولیه آشنا شدیم، در ادامه بیاید از یک مثال عینی‌تر استفاده کنیم.

پیاده سازی متد some() 

متد some() در جاوا اسکریپت برای کار با آرایه‌ها وجود دارد. این متد فقط یک کار را انجام می‌دهد، شرایط داده شده به آن را بررسی می‌کند اگر این شرایط حداقل با یک عنصر مطابقت داشت trueو در غیر این صورت false  را برمی‌گرداند.

بیاید به قسمت boot در AppServiceProvider خود برویم و متد زیر را پیاده سازی کنیم:

Collection::macro('some', function ($callback) {     return !! $this->first(function ($value, $key) use ($callback) {         return $callback($value, $key);     }); });

در ادامه ما می‌توانیم از متد تعریف شده به صورت زیر استفاده کنیم:

collect([1, 2, 3, 4])->some(function ($value) {     return $value > 2; }); // true  collect([1, 2, 3, 4])->some(function ($value) {     return $value > 5; }); // false  collect([1, 2, 3, 4])->some(function ($value, $key) {     return $key % 2 === 0; }); // true  collect([1, 2, 3, 4])->some(function ($value, $key) {     return $key === 'key'; }); // false

درک این موضوع مهم است که متدsome()  یک آیتم را به عنوان نتیجه برنمی‌گرداند بلکه فقط یک مقدار بولین را برمی‌گرداند.

 نتیجه گیری

 کالکشن‌ها در لاراول خیلی قدرتمند هستند، در حقیقت شما می‌توانید با گسترش آن‌ها باعث کارآمد تر شدن آن‌ها در اپلیکیشن خود بشوید.

منبع

95
18 شهریور 1398
..نظرات..
..مقالات پربازدید..
طراحی سایت

آموزش قرعه کشی در اینستاگرام

  آموزش قرعه کشی در اینستاگرام   با سلام خدمت دوستان و کاربران گرامی . امروز با آموزش قرعه کشی در اینستاگرام برای کسانی که علاقه به ایجاد کمپین های تبلیغاتی دارند در خدمت شما هستیم . بحث قرعه کشی در اینستاگرام با توجه به فراگیر شدن این شبکه اجتماعی که البته امروزه زیرمجموعه فیسبوک مطرح میشود ، زیاد شده است . البته این احتمال وج...

9606
24 فروردین 1398
برنامه نویسی

آموزش کار با افزونه دکان (چند فروشندگی)

آموزش کار با افزونه دکان (چند فروشندگی) افزونه دکان در طراحی سایت فروشگاهی مورد استفاده قرار می گیرد. طراحی سایت در این مورد به گونه ای است که در یک وب سایت، چندین فروشنده امکان قرار دادن و فروش محصولات خود را، در پنل های جداگانه دارند. برای عضویت و قرار دادن محصولات در آن ابتدا وارد وب سایت مورد نظر که با افزونه دکان ایجاد شده است، شوید....

798
04 دی 1397
برنامه نویسی

ویژگی های جدید لاراول 5.8

تغییرات لاراول 5.8 LARAVEL ورژن بعدی فریم ورک لاراول با نسخه ۵.۸ در ماه فوریه سال ۲۰۱۹ منتشر میشه. در حال حاظر تنها مواردی که قطعی شده پشتیبانی لاراول ۵.۸ از کتابخانه carbon نسخه ۲ می باشد. و قابلیت امکان سوییچ بین هر دو نسخه یک و دو carbon مورد دیگر استفاده laravel 5.8 از vlucas/phpdotenv ورژن 3 برای فایل .env میباشد که اجازه استف...

736
08 اسفند 1397