یک برنامه نویس تنبل
🔶 بوت استرپ نسخه ۶ افزودن کلاس های جدید برای ایحاد رنگ بندی جدید @TheRaymondDev
نگاهی به تغییرات مهم نسخه 6
طبق اعلام تیم Bootstrap، در نسخهی Bootstrap v6 سیستم رنگ و تم به شکل کامل بازطراحی خواهد شد.
هدف؟؟
سادگی بیشتر، هماهنگی بین کامپوننتها و پشتیبانی هوشمند از حالت تیره و روشن.
کلاسهای سراسری بهجای کلاسهای اختصاصی
قبلن برای هر کامپوننت کلاس جدا داشتیم مثل:
.btn-primary یا .alert-primary.
📌 اما در نسخه 6، کلاسهای رنگی سراسری شدن — مثلن فقط از .theme-primary استفاده میکنید و همهی اجزای داخل اون از همون تم پیروی میکنند.
کد سادهتر، طراحی منسجمتر
تطبیق خودکار با حالت تیره/روشن
نسخه جدید از تابع مدرن CSS بنام light-dark() استفاده میکنه،
بنابرین رنگها بهصورت خودکار با حالت سیستم (Dark/Light Mode) هماهنگ میشن — بدون نیاز به media query.
رنگها
رنگهای تازه مثل Violet، Amber، Lime، Brown و Pewter اضافه شدهاند.
همچنین، درجات خیلی روشن و خیلی تیره (025, 050, 950, 975) برای هر رنگ در دسترسه.
📎 در کل:
نسخهی 6 تمرکز داره روی این موارد:
یکپارچهسازی تمها،
کاهش تکرار در کلاسها،
و پشتیبانی هوشمند از حالت تیره.
نتیجش هم طراحی سادهتر، مدرنتر و حرفهایتر برای تمام کامپوننتها.
#bootstrap #بوت_استرپ #فرانت
@GoldenCodeir 🔥
(منبع👇🏾 )
https://x.com/getbootstrap/status/1975652460992835762?t=Iqg0G6PDseMk691A4Gbj5A&s=35
طبق اعلام تیم Bootstrap، در نسخهی Bootstrap v6 سیستم رنگ و تم به شکل کامل بازطراحی خواهد شد.
هدف؟؟
سادگی بیشتر، هماهنگی بین کامپوننتها و پشتیبانی هوشمند از حالت تیره و روشن.
کلاسهای سراسری بهجای کلاسهای اختصاصی
قبلن برای هر کامپوننت کلاس جدا داشتیم مثل:
.btn-primary یا .alert-primary.
📌 اما در نسخه 6، کلاسهای رنگی سراسری شدن — مثلن فقط از .theme-primary استفاده میکنید و همهی اجزای داخل اون از همون تم پیروی میکنند.
کد سادهتر، طراحی منسجمتر
تطبیق خودکار با حالت تیره/روشن
نسخه جدید از تابع مدرن CSS بنام light-dark() استفاده میکنه،
بنابرین رنگها بهصورت خودکار با حالت سیستم (Dark/Light Mode) هماهنگ میشن — بدون نیاز به media query.
رنگها
رنگهای تازه مثل Violet، Amber، Lime، Brown و Pewter اضافه شدهاند.
همچنین، درجات خیلی روشن و خیلی تیره (025, 050, 950, 975) برای هر رنگ در دسترسه.
📎 در کل:
نسخهی 6 تمرکز داره روی این موارد:
یکپارچهسازی تمها،
کاهش تکرار در کلاسها،
و پشتیبانی هوشمند از حالت تیره.
نتیجش هم طراحی سادهتر، مدرنتر و حرفهایتر برای تمام کامپوننتها.
#bootstrap #بوت_استرپ #فرانت
@GoldenCodeir 🔥
(منبع👇🏾 )
https://x.com/getbootstrap/status/1975652460992835762?t=Iqg0G6PDseMk691A4Gbj5A&s=35
X (formerly Twitter)
Bootstrap (@getbootstrap) on X
Lots of happenings lately for v6's development!
One new idea is to move from component-specific modifiers to global ones. Take this example—use `.theme-primary` on all components, or on a parent, and even override where needed.
Also, spot the new button…
One new idea is to move from component-specific modifiers to global ones. Take this example—use `.theme-primary` on all components, or on a parent, and even override where needed.
Also, spot the new button…
👍9
اصل S در اصول SOLID یعنی Single Responsibility Principle (اصل تک مسئولیتی)
چی میگه؟
یک کلاس باید فقط یک مسئولیت داشته باشه و فقط یک دلیل برای تغییر. یعنی هر کلاس باید یک نقش مشخص در سیستم داشته باشه و همه کارها رو قاطی نکنه.
چرا این مهمترین اصل SOLIDهستش؟
وقتی یک کلاس چند مسئولیت داشته باشه:
پیدا کردن و رفع باگ سخت میشه،
تغییرات کوچیک تو یه قسمت ممکنه باعث خرابی بخشهای دیگه بشه،
توسعه و نگهداری پروژه با مشکل مواجه میشه و تیمها بیشتر زمانشون رو صرف درست کردن کد میکنن تا اضافه کردن ویژگیهای جدید.
نتیجش:
با رعایت این اصل، کد تمیزتر، قابل فهمتر و قابل تستتر میشه.
کلاسها سادهتر هستند و وقتی نیاز به تغییر باشه، فقط بخش مرتبط اصلاح میشه بدون اینکه باقی سیستم آسیب ببینه.
#SOLID
@GoldenCodeir 🔥
(منبع👇🏾)
https://www.linkedin.com/posts/ali-mohammadi-5b7375389_solid-activity-7382848511261773824-diAJ?utm_source=share&utm_medium=member_android&rcm=ACoAAF-g0BsBHAA03jv74SJdJwUrgHFqATrvXb8
چی میگه؟
یک کلاس باید فقط یک مسئولیت داشته باشه و فقط یک دلیل برای تغییر. یعنی هر کلاس باید یک نقش مشخص در سیستم داشته باشه و همه کارها رو قاطی نکنه.
چرا این مهمترین اصل SOLIDهستش؟
وقتی یک کلاس چند مسئولیت داشته باشه:
پیدا کردن و رفع باگ سخت میشه،
تغییرات کوچیک تو یه قسمت ممکنه باعث خرابی بخشهای دیگه بشه،
توسعه و نگهداری پروژه با مشکل مواجه میشه و تیمها بیشتر زمانشون رو صرف درست کردن کد میکنن تا اضافه کردن ویژگیهای جدید.
نتیجش:
با رعایت این اصل، کد تمیزتر، قابل فهمتر و قابل تستتر میشه.
کلاسها سادهتر هستند و وقتی نیاز به تغییر باشه، فقط بخش مرتبط اصلاح میشه بدون اینکه باقی سیستم آسیب ببینه.
#SOLID
@GoldenCodeir 🔥
(منبع👇🏾)
https://www.linkedin.com/posts/ali-mohammadi-5b7375389_solid-activity-7382848511261773824-diAJ?utm_source=share&utm_medium=member_android&rcm=ACoAAF-g0BsBHAA03jv74SJdJwUrgHFqATrvXb8
👍10❤1
Forwarded from DevTwitter | توییت برنامه نویسی
بلاخره React از مِتا جدا شد!
بعد بیش از ۱۰ سال، React قراره تحت یه بنیاد مستقل به نام React Foundation اداره بشه ( زیر چتر Linux Foundation )
یعنی از این به بعد تصمیم گیری ها و سرنوشت ری اکت، دیگه فقط دست Meta نیست و جامعه دولوپرها و شرکتهای دیگه هم تو جهت دهی آینده React نقش دارن!
و این یعنی شفافیت، مشارکت و تنوع بیشتر در توسعه کتابخونه دوست داشتنی ری اکت
بنظرم React داره یه فصل جدید از داستانش رو شروع میکنه…
ری اکت دیگه صرفا پروژه یه شرکت نیست، بلکه نتیجه ی همکاری یه جامعه ی جهانی از دولوپر هاست
@DevTwitter | <Ahmad Ahmad-Nejad/>
بعد بیش از ۱۰ سال، React قراره تحت یه بنیاد مستقل به نام React Foundation اداره بشه ( زیر چتر Linux Foundation )
یعنی از این به بعد تصمیم گیری ها و سرنوشت ری اکت، دیگه فقط دست Meta نیست و جامعه دولوپرها و شرکتهای دیگه هم تو جهت دهی آینده React نقش دارن!
و این یعنی شفافیت، مشارکت و تنوع بیشتر در توسعه کتابخونه دوست داشتنی ری اکت
بنظرم React داره یه فصل جدید از داستانش رو شروع میکنه…
ری اکت دیگه صرفا پروژه یه شرکت نیست، بلکه نتیجه ی همکاری یه جامعه ی جهانی از دولوپر هاست
@DevTwitter | <Ahmad Ahmad-Nejad/>
👍13🔥2
متود mode() یکی از متودهای کاربردیه کالکشن های لاراول است که پر تکرارترین مقدار داخل یک Collection رو برمیگردونه.
مثال:
📌 نکته:
خروجی به صورت آرایه هستش چون ممکنه چند مقدار با بیشترین تکرار وجود داشته باشه.
فرض کنین میخواید در سیستم سفارشات، محبوبترین روش ارسال کالا در ۳۰ روز گذشته برای هر تیم رو بصورت خودکار انتخاب کنید. متود mode() بهترین گزینس چون هم مقدار پر تکرار رو بر میگردونه و هم اگه چند روش ارسال تعداد تکرار برابر داشتند، بصورت کامل مدیریت میکنه.
خلاصش که:
متود mode() سادهترین راه برای گرفتن پرکاربردترین یا پر تکرارترین مقدار از دادههای جمعآوری شده هستش.
#Laravel #laravel_tip #لاراول
@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/wendell_adriel/status/1977713885433012395?t=ukkZaeMjXG9DkTk7wfrCIA&s=35
مثال:
$collection = collect([1, 2, 2, 3, 3, 3, 4]);
$mostFrequent = $collection->mode();
// خروجی: [3]
📌 نکته:
خروجی به صورت آرایه هستش چون ممکنه چند مقدار با بیشترین تکرار وجود داشته باشه.
فرض کنین میخواید در سیستم سفارشات، محبوبترین روش ارسال کالا در ۳۰ روز گذشته برای هر تیم رو بصورت خودکار انتخاب کنید. متود mode() بهترین گزینس چون هم مقدار پر تکرار رو بر میگردونه و هم اگه چند روش ارسال تعداد تکرار برابر داشتند، بصورت کامل مدیریت میکنه.
خلاصش که:
متود mode() سادهترین راه برای گرفتن پرکاربردترین یا پر تکرارترین مقدار از دادههای جمعآوری شده هستش.
#Laravel #laravel_tip #لاراول
@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/wendell_adriel/status/1977713885433012395?t=ukkZaeMjXG9DkTk7wfrCIA&s=35
X (formerly Twitter)
Wendell Adriel (@wendell_adriel) on X
Laravel Tip 🚀
Do you know the mode() method from Laravel Collections? It returns the most frequent value for a given collection (or key).
In the example, we use it to auto-select the most-used shipping method from the last 30 days per team, also handling…
Do you know the mode() method from Laravel Collections? It returns the most frequent value for a given collection (or key).
In the example, we use it to auto-select the most-used shipping method from the last 30 days per team, also handling…
👍15
Golden Code
اصل S در اصول SOLID یعنی Single Responsibility Principle (اصل تک مسئولیتی) چی میگه؟ یک کلاس باید فقط یک مسئولیت داشته باشه و فقط یک دلیل برای تغییر. یعنی هر کلاس باید یک نقش مشخص در سیستم داشته باشه و همه کارها رو قاطی نکنه. چرا این مهمترین اصل SOLIDهستش؟…
اصل open closed در اصول SOLID چی میگه؟
این اصل میگه که:
کلاسها، ماژولها یا توابع باید برای توسعه باز باشند ولی برای تغییر بسته باشند.
به عبارت دیگه، سیستم نرمافزاری باید به گونهای طراحی بشه که قابلیت افزودن ویژگیهای جدید بدون نیاز به تغییر در کدهای موجود فراهم باشه. این رویکرد باعث کاهش ریسک خطا و افزایش پایداری نرمافزار میشه.
📌 اهمیت open closed
کاهش خطا و باگها:
با اجتناب از تغییر کدهای تستشده، احتمال ورود خطاهای جدید کمتر میشه.
افزایش انعطافپذیری:
افزودن قابلیتهای جدید بدون دستکاری کدهای قبلی امکانپذیره .
نگهداری آسون تر:
توسعهدهندگان اینطوری میتونن بدون نگرانی از تاثیر تغییرات، روی توسعه کار کنند.
بهبود کیفیت:
کدهای قابل توسعه، سرمایه بلندمدت تیمهای نرمافزاری هستند.
📌 خلاصش که:
اصل open closed یکی از مهمترین اصول طراحی نرمافزاره که با رعایتش، توسعه نرمافزار هم سادهتر و هم مطمئنتر میشه. اگه میخواید پروژههای نرمافزاریتون در طول زمان قابلیت رشد داشته باشن و تیم توسعه دغدغه کمتری برای تغییرات داشته باشه این اصل رو جدی بگیرید.
#SOLID #OpenClosedPrinciple
(منبع👇🏾)
https://www.linkedin.com/posts/ali-mohammadi-5b7375389_solid-openclosedprinciple-share-7384671951681691649-2OGj?utm_source=share&utm_medium=member_android&rcm=ACoAAF-g0BsBHAA03jv74SJdJwUrgHFqATrvXb8
این اصل میگه که:
کلاسها، ماژولها یا توابع باید برای توسعه باز باشند ولی برای تغییر بسته باشند.
به عبارت دیگه، سیستم نرمافزاری باید به گونهای طراحی بشه که قابلیت افزودن ویژگیهای جدید بدون نیاز به تغییر در کدهای موجود فراهم باشه. این رویکرد باعث کاهش ریسک خطا و افزایش پایداری نرمافزار میشه.
📌 اهمیت open closed
کاهش خطا و باگها:
با اجتناب از تغییر کدهای تستشده، احتمال ورود خطاهای جدید کمتر میشه.
افزایش انعطافپذیری:
افزودن قابلیتهای جدید بدون دستکاری کدهای قبلی امکانپذیره .
نگهداری آسون تر:
توسعهدهندگان اینطوری میتونن بدون نگرانی از تاثیر تغییرات، روی توسعه کار کنند.
بهبود کیفیت:
کدهای قابل توسعه، سرمایه بلندمدت تیمهای نرمافزاری هستند.
📌 خلاصش که:
اصل open closed یکی از مهمترین اصول طراحی نرمافزاره که با رعایتش، توسعه نرمافزار هم سادهتر و هم مطمئنتر میشه. اگه میخواید پروژههای نرمافزاریتون در طول زمان قابلیت رشد داشته باشن و تیم توسعه دغدغه کمتری برای تغییرات داشته باشه این اصل رو جدی بگیرید.
#SOLID #OpenClosedPrinciple
(منبع👇🏾)
https://www.linkedin.com/posts/ali-mohammadi-5b7375389_solid-openclosedprinciple-share-7384671951681691649-2OGj?utm_source=share&utm_medium=member_android&rcm=ACoAAF-g0BsBHAA03jv74SJdJwUrgHFqATrvXb8
👍7
لاراول از قابلیت Task Scheduling بسیار قدرتمندی برخورداره. دو متود خیلی کاربردی درین زمینه وجود داره:
🔹 pingOnSuccess()
🔹 pingOnFailure()
این متودها به شما اجازه میدن بعد از اجرای یک تسک، بصورت خودکار درخواست HTTP به یک وبهوک یا API بفرستین.
📌 مثلا:
فرض کنین در پروژتون یک تسک بکاپگیری خودکار دارین که هر شب اجرا میشه.
بعد از اتمام موفقیت آمیزه بکاپ، میخواید یک سرویس مانیتورینگ رو مطلع کنید که همه چی اوکی بوده و میتونه لاگها رو آرشیو کنه. برای این کار با pingOnSuccess() میتونید به راحتی یک درخواست HTTP به سرویس مانیتورینگ بفرستید.
از طرفی اگه عملیات بکاپ fail شد، با pingOnFailure() میتونین سریع یک هشدار به تیمتون یا سرویس اعلان بفرستید تا موضوع بررسی بشه.
چرا مهمه؟
این قابلیت کمک میکنه workflow بین سرویسها به شکل اتوماتیک و مطمئن کنترل بشه و در صورت بروز خطا سریع واکنش داده بشه.
#Laravel #Laravel_tip #لاراول
@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/wendell_adriel/status/1979151691023810615?t=om0EwaeLVurWj05Rmxl5Tg&s=19
🔹 pingOnSuccess()
🔹 pingOnFailure()
این متودها به شما اجازه میدن بعد از اجرای یک تسک، بصورت خودکار درخواست HTTP به یک وبهوک یا API بفرستین.
📌 مثلا:
فرض کنین در پروژتون یک تسک بکاپگیری خودکار دارین که هر شب اجرا میشه.
بعد از اتمام موفقیت آمیزه بکاپ، میخواید یک سرویس مانیتورینگ رو مطلع کنید که همه چی اوکی بوده و میتونه لاگها رو آرشیو کنه. برای این کار با pingOnSuccess() میتونید به راحتی یک درخواست HTTP به سرویس مانیتورینگ بفرستید.
از طرفی اگه عملیات بکاپ fail شد، با pingOnFailure() میتونین سریع یک هشدار به تیمتون یا سرویس اعلان بفرستید تا موضوع بررسی بشه.
$schedule->command('backup:run')
->dailyAt('02:00')
->pingOnSuccess('https://your-monitoring-service.com/api/backup-success')
->pingOnFailure('https://your-alert-service.com/api/backup-failed');چرا مهمه؟
این قابلیت کمک میکنه workflow بین سرویسها به شکل اتوماتیک و مطمئن کنترل بشه و در صورت بروز خطا سریع واکنش داده بشه.
#Laravel #Laravel_tip #لاراول
@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/wendell_adriel/status/1979151691023810615?t=om0EwaeLVurWj05Rmxl5Tg&s=19
X (formerly Twitter)
Wendell Adriel (@wendell_adriel) on X
Laravel Tip 🚀
Did you know about the pingOnSuccess() and pingOnFailure() methods when scheduling tasks on Laravel? They are pretty handy in many situations!
In the example, after a nightly ETL completes, we can start a reindex job in another service by…
Did you know about the pingOnSuccess() and pingOnFailure() methods when scheduling tasks on Laravel? They are pretty handy in many situations!
In the example, after a nightly ETL completes, we can start a reindex job in another service by…
👍13🔥3
به گفته ی Taylor Otwell
نسخهای جدید از لاراول منتشر شد که دو ویژگی قدرتمند و کاربردی بهش اضافه شده:
📌 شماره ۱ : Cache Failover
یکی از چالشهای رایج در پروژههای بزرگ، خرابی کش (مثل Redis) است. در گذشته اگه کش از کار میفتاد، ممکن بود پروژه با خطا مواجه بشه و از کار بیفته.
حالا لاراول از cache failover پشتیبانی میکنه:
اگه کش اصلی در دسترس نباشه لاراول بصورت خودکار سراغ کش پشتیبان (مثل فایل یا دیتابیس) میره و از بروز خطا جلوگیری میکنه.
📌 شماره ۲: Deferred Queue
قابلیت دوم، نوع جدیدی از صف هست با نام deferred.
این صفها به شما اجازه میدن که اجرای job هارو تا زمانی خاص به تاخیر بندازید ، نه صرفا با delay زمانی، بلکه با منطق های انعطاف پذیرتر.
مثلا:
میتونید job ها رو در صف نگه دارید، ولی اجرای اونارو تا زمان فراهم بودن شرایط مشخصی (مثل آماده شدن یک ریسورس خارجی یا عبور از محدودیتها) به تعویق بندازین.
#Laravel #PHP #Laravel_tip #لاراول
@GoldenCodeir 🔥
داکیومنته لاراول:
https://laravel.com/docs/12.x/cache#cache-failover
(منبع👇🏾)
https://x.com/taylorotwell/status/1980664560492376378?t=AW_V157KGhHWfyPOqCy1Lg&s=35
نسخهای جدید از لاراول منتشر شد که دو ویژگی قدرتمند و کاربردی بهش اضافه شده:
📌 شماره ۱ : Cache Failover
یکی از چالشهای رایج در پروژههای بزرگ، خرابی کش (مثل Redis) است. در گذشته اگه کش از کار میفتاد، ممکن بود پروژه با خطا مواجه بشه و از کار بیفته.
حالا لاراول از cache failover پشتیبانی میکنه:
اگه کش اصلی در دسترس نباشه لاراول بصورت خودکار سراغ کش پشتیبان (مثل فایل یا دیتابیس) میره و از بروز خطا جلوگیری میکنه.
📌 شماره ۲: Deferred Queue
قابلیت دوم، نوع جدیدی از صف هست با نام deferred.
این صفها به شما اجازه میدن که اجرای job هارو تا زمانی خاص به تاخیر بندازید ، نه صرفا با delay زمانی، بلکه با منطق های انعطاف پذیرتر.
مثلا:
میتونید job ها رو در صف نگه دارید، ولی اجرای اونارو تا زمان فراهم بودن شرایط مشخصی (مثل آماده شدن یک ریسورس خارجی یا عبور از محدودیتها) به تعویق بندازین.
#Laravel #PHP #Laravel_tip #لاراول
@GoldenCodeir 🔥
داکیومنته لاراول:
https://laravel.com/docs/12.x/cache#cache-failover
(منبع👇🏾)
https://x.com/taylorotwell/status/1980664560492376378?t=AW_V157KGhHWfyPOqCy1Lg&s=35
X (formerly Twitter)
Taylor Otwell (@taylorotwell) on X
Today's Laravel release ships with cache failover support as well as a "deferred" queue. 🫧
Cache failover automatically tries a backup cache if your primary cache is down.
https://t.co/cdwKRiwZBP
Cache failover automatically tries a backup cache if your primary cache is down.
https://t.co/cdwKRiwZBP
👍11❤4
Golden Code
اصل open closed در اصول SOLID چی میگه؟ این اصل میگه که: کلاسها، ماژولها یا توابع باید برای توسعه باز باشند ولی برای تغییر بسته باشند. به عبارت دیگه، سیستم نرمافزاری باید به گونهای طراحی بشه که قابلیت افزودن ویژگیهای جدید بدون نیاز به تغییر در کدهای…
اصلLSP یکی از اصول مهم SOLID هستش که میگه:
"Objects of a subclass should be replaceable with objects of their superclass without affecting the correctness of the program."
این اصل تاکید داره که کلاسهای فرزند باید بهگونهای طراحی بشن که در صورت جایگزینی با کلاس والد، سیستم به درستی عمل کنه و هیچ مشکلی پیش نیاد.
چرا LSP مهمه ؟
1.تاثیر در پایداری کد
2. باعثه کاهش باگهای پروژه میشه
3. انعطافپذیری: با رعایت LSP میتونید به راحتی کلاسهای فرزند رو جایگزین کلاسهای والد کنید بدون اینکه نیاز به تغییرات زیادی در کد داشته باشین.
📌 نقض LSP و مشکلاتش
زمانیکه یک کلاس فرزند رفتار متفاوتی نسبت به کلاس والدش ارائه بده LSP نقض میشه. این خب میتونه باعث یک خطا بشه.
مثلا اگه یک کلاس فرزند ویژگیهایی رو به ارث ببره که براش مناسب نیست (مثل پرواز برای یک پنگوئن)، وقتی اون کلاس فرزند جایگزین کلاس والد بشه، ممکنه برنامه با خطا مواجه بشه.
✅️ راهحل: یه طراحیه صحیح
برای جلوگیری از نقض LSP باید کلاسها بهگونهای طراحی بشن که تنها ویژگیهای مرتبط رو ارث ببرند. مثلا، میشه رفتارهایی که به پرواز مربوط هستن رو در یک کلاس جداگانه قرار داد و رفتارهایی که به ویژگیهای دیگر مربوط میشن رو در کلاسهای دیگر مدیریت کرد.
این طراحی باعث میشه که هر کلاسه فرزند فقط ویژگیهای مرتبط با خودشو داشته باشه و امکان جایگزینی کلاسها بدون بروز مشکل وجود داشته باشه.
خلاصش که:
اصل LSP میگه که کلاسهای فرزند باید رفتار کلاس والد خودشونو بهدرستی حفظ کنند. این اصل باعث میشه که کد ما قابل توسعه، پایدار و بدون خطا باقی بمونه و از بروز مشکلات هنگام جایگزینی کلاسها جلوگیری بشه.
#SOLID #LSP
@GoldenCodeir 🔥
(منبع👇🏾)
https://www.linkedin.com/posts/ali-mohammadi-5b7375389_solid-lsp-liskovabrsubstitution-activity-7387569961008943104-XDW2?utm_source=share&utm_medium=member_android&rcm=ACoAAF-g0BsBHAA03jv74SJdJwUrgHFqATrvXb8
"Objects of a subclass should be replaceable with objects of their superclass without affecting the correctness of the program."
این اصل تاکید داره که کلاسهای فرزند باید بهگونهای طراحی بشن که در صورت جایگزینی با کلاس والد، سیستم به درستی عمل کنه و هیچ مشکلی پیش نیاد.
چرا LSP مهمه ؟
1.تاثیر در پایداری کد
2. باعثه کاهش باگهای پروژه میشه
3. انعطافپذیری: با رعایت LSP میتونید به راحتی کلاسهای فرزند رو جایگزین کلاسهای والد کنید بدون اینکه نیاز به تغییرات زیادی در کد داشته باشین.
📌 نقض LSP و مشکلاتش
زمانیکه یک کلاس فرزند رفتار متفاوتی نسبت به کلاس والدش ارائه بده LSP نقض میشه. این خب میتونه باعث یک خطا بشه.
مثلا اگه یک کلاس فرزند ویژگیهایی رو به ارث ببره که براش مناسب نیست (مثل پرواز برای یک پنگوئن)، وقتی اون کلاس فرزند جایگزین کلاس والد بشه، ممکنه برنامه با خطا مواجه بشه.
✅️ راهحل: یه طراحیه صحیح
برای جلوگیری از نقض LSP باید کلاسها بهگونهای طراحی بشن که تنها ویژگیهای مرتبط رو ارث ببرند. مثلا، میشه رفتارهایی که به پرواز مربوط هستن رو در یک کلاس جداگانه قرار داد و رفتارهایی که به ویژگیهای دیگر مربوط میشن رو در کلاسهای دیگر مدیریت کرد.
این طراحی باعث میشه که هر کلاسه فرزند فقط ویژگیهای مرتبط با خودشو داشته باشه و امکان جایگزینی کلاسها بدون بروز مشکل وجود داشته باشه.
خلاصش که:
اصل LSP میگه که کلاسهای فرزند باید رفتار کلاس والد خودشونو بهدرستی حفظ کنند. این اصل باعث میشه که کد ما قابل توسعه، پایدار و بدون خطا باقی بمونه و از بروز مشکلات هنگام جایگزینی کلاسها جلوگیری بشه.
#SOLID #LSP
@GoldenCodeir 🔥
(منبع👇🏾)
https://www.linkedin.com/posts/ali-mohammadi-5b7375389_solid-lsp-liskovabrsubstitution-activity-7387569961008943104-XDW2?utm_source=share&utm_medium=member_android&rcm=ACoAAF-g0BsBHAA03jv74SJdJwUrgHFqATrvXb8
Linkedin
#solid #lsp #liskov_substitution | Ali Mohammadi
What is LSP?
The Liskov Substitution Principle states:
"Objects of a subclass should be replaceable with objects of their superclass without affecting the correctness of the program."
In other words, subclasses should not violate the rules or expectations…
The Liskov Substitution Principle states:
"Objects of a subclass should be replaceable with objects of their superclass without affecting the correctness of the program."
In other words, subclasses should not violate the rules or expectations…
👍7
ویژگیه جدید defer در لاراول v12.34.0
در لاراول نسخه 12.34.0، متود جدیدی به نام defer در کلاس HTTP Client Batch معرفی شده که میتونه تاثیر زیادی در بهبود سرعته اپلیکیشن داشته باشه.
📌 چیکار میکنه؟
با استفاده از defer میتونین درخواستهای HTTP به api های خارجی یا سرویس های انلاین رو پس از ارسال پاسخ به کاربر ارسال کنین. یعنی این که زمان انتظار برای این درخواستها روی تجربه کاربری تاثیر نمیذاره و سرعت پاسخدهی به کاربر بیشتر میشه.
📌 چرا باید استفاده کنیم؟
افزایش سرعت پاسخدهی به کاربر:
با استفاده از defer، درخواست های HTTP به سرویسهای خارجی بعده ارسال پاسخ به کاربر آغاز میشن.
این یعنی زمان انتظار برای کاربر به حداقل میرسه و عملیاته زمانبر در بکگراند انجام میشه، بدون اینکه سرعت بارگذاری صفحات تحت تاثیر قرار بگیره.
عملیاتهای زمانبر بدون تاثیر بر تجربه کاربری:
مثل ارسال ایمیلها یا بروزرسانی موجودی انبار.
بهینهسازی منابع سرور:
منابع سرور به شکل بهتری مدیریت میشن.
نمونه کدش:
خلاصه که اگه دنبال بهبود سرعت و عملکرد اپلیکیشنید ، این ویژگی میتونه خیلی مفید باشه!
#Laravel #Laravel_tip #لاراول
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/magadum_aniket/status/1981755582836019433?t=8V5fsh9-RDxwLVoMlX4dVA&s=35
در لاراول نسخه 12.34.0، متود جدیدی به نام defer در کلاس HTTP Client Batch معرفی شده که میتونه تاثیر زیادی در بهبود سرعته اپلیکیشن داشته باشه.
📌 چیکار میکنه؟
با استفاده از defer میتونین درخواستهای HTTP به api های خارجی یا سرویس های انلاین رو پس از ارسال پاسخ به کاربر ارسال کنین. یعنی این که زمان انتظار برای این درخواستها روی تجربه کاربری تاثیر نمیذاره و سرعت پاسخدهی به کاربر بیشتر میشه.
📌 چرا باید استفاده کنیم؟
افزایش سرعت پاسخدهی به کاربر:
با استفاده از defer، درخواست های HTTP به سرویسهای خارجی بعده ارسال پاسخ به کاربر آغاز میشن.
این یعنی زمان انتظار برای کاربر به حداقل میرسه و عملیاته زمانبر در بکگراند انجام میشه، بدون اینکه سرعت بارگذاری صفحات تحت تاثیر قرار بگیره.
عملیاتهای زمانبر بدون تاثیر بر تجربه کاربری:
مثل ارسال ایمیلها یا بروزرسانی موجودی انبار.
بهینهسازی منابع سرور:
منابع سرور به شکل بهتری مدیریت میشن.
نمونه کدش:
use Illuminate\Support\Facades\Http;
Http::batch(function ($batch) {
$batch->defer(Http::post('https://example.com/api/notify', [...]));
$batch->defer(Http::post('https://example.com/api/update-stock', [...]));
});
خلاصه که اگه دنبال بهبود سرعت و عملکرد اپلیکیشنید ، این ویژگی میتونه خیلی مفید باشه!
#Laravel #Laravel_tip #لاراول
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/magadum_aniket/status/1981755582836019433?t=8V5fsh9-RDxwLVoMlX4dVA&s=35
X (formerly Twitter)
Aniket Magadum (@magadum_aniket) on X
Hey Laravel Developers 👩💻
Starting with Laravel v12.34.0, we have a new defer method available in Laravel's HTTP Client Batch class.
As the name suggests, this method allows us to send HTTP calls after the response has been sent back to the client (browser).…
Starting with Laravel v12.34.0, we have a new defer method available in Laravel's HTTP Client Batch class.
As the name suggests, this method allows us to send HTTP calls after the response has been sent back to the client (browser).…
👍5❤2🔥1
در لاراول اگه بخوایم بصورت همزمان چندین Job رو در queue با اولویتهای مختلف ارسال کنیم، از کدوم ویژگی استفاده میشه؟
Anonymous Quiz
41%
onQueue()
11%
delay()
43%
chain()
5%
onConnection()
👍5🤷♂2
یه روش برای اینکه کارهای تکراریه مثل ساخت یه سری کلاسهای خاص (مثلا DTO) رو خودکار کنید
اولش ببینیم چرا custom artisan command مفیده؟
صرفهجویی در زمان
کاهش خطا: از نوشتن دستی کد جلوگیری میکنین
وقت بیشتری برای کدنویسی بخشهای مهم پروژه دارید.
📌 چطوری custom artisan command بسازیم؟
1. ایجاد کامند جدید:
با دستور زیر، یک کامند جدید ایجاد کنین:
2. نوشتن منطق دستور:
در کلاس جدید،دستور مورد نظرتونو بنویسین (مثل ساخت یک DTO جدید).
یه مثال:
3. اجرای دستور:
حالا با این دستور میتونین بسادگی کلاسهای DTO جدید بسازید:
خلاصش که:
با استفاده از custom artisan command، میتونین کارهای تکراریتون رو خودکار کنین و توسعه پروژتون رو هم سرعت بدید.
#Laravel #Laravel_tip #لاراول
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1982797695568707742?t=EQ-hdRBX3rRgGuPH2EyA9Q&s=19
اولش ببینیم چرا custom artisan command مفیده؟
صرفهجویی در زمان
کاهش خطا: از نوشتن دستی کد جلوگیری میکنین
وقت بیشتری برای کدنویسی بخشهای مهم پروژه دارید.
📌 چطوری custom artisan command بسازیم؟
1. ایجاد کامند جدید:
با دستور زیر، یک کامند جدید ایجاد کنین:
php artisan make:command CreateDto
2. نوشتن منطق دستور:
در کلاس جدید،دستور مورد نظرتونو بنویسین (مثل ساخت یک DTO جدید).
یه مثال:
<?php
protected $signature = 'make:dto {name}';
protected $denoscription = 'Create a new DTO class';
public function handle() {
$name = $this->argument('name');
file_put_contents(app_path("Dtos/{$name}.php"), "<?php\n\nclass {$name} {}\n");
$this->info("DTO {$name} created successfully!");
}
3. اجرای دستور:
حالا با این دستور میتونین بسادگی کلاسهای DTO جدید بسازید:
php artisan make:dto MyDto
خلاصش که:
با استفاده از custom artisan command، میتونین کارهای تکراریتون رو خودکار کنین و توسعه پروژتون رو هم سرعت بدید.
#Laravel #Laravel_tip #لاراول
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1982797695568707742?t=EQ-hdRBX3rRgGuPH2EyA9Q&s=19
X (formerly Twitter)
Martin Joo (@mmartin_joo) on X
💡 Did you know you can create custom artisan generator commands for your classes?
If you find yourself creating the same type of class over and over again (for example, DTOs), you might want to take a look at it:
If you find yourself creating the same type of class over and over again (for example, DTOs), you might want to take a look at it:
👍7👎2
تا حالا پیش اومده بخوای یه قابلیت یا یه گزارش فقط برای درصد کمی از کاربران فعال باشه؟
لاراول یه ابزار باحال برای این کار داره: Lottery
مثال:
تست ویژگی جدیده سایتمون فقط برای ۵٪ کاربران
فرض کن میخوای یه قابلیت جدید (مثلا طراحی تازهی داشبورد) رو فقط برای ۵٪ از کاربرها فعال کنی تا عملکردش رو بسنجی 👇🏾
حالا فقط ۵٪ کاربران این داشبورد جدید رو میبینن 🔥
بدون نیاز به feature flag سیستم یا تنظیمات پیچیده.
📌 کاربردهای دیگه ی Lottery در لاراول
مانیتورینگه سبک:
گرفتن لاگ کامل SQL در درصدی از ریکوئستها
تست A/B برای UX
اجرای وظایف سنگین فقط در بخشی از ریکوئست ها (مثلا آنالیز رفتار کاربر)
این Lottery از نسخهی 9.19 به بعد اضافه شده و توی اپهای پر ترافیک کمک میکنه بدون کاهش سرعت، رفتار سیستم رو هوشمندانه بررسی کنی.
#Laravel #Laravel_tip #لاراول
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/wendell_adriel/status/1978788530139635982?t=Hc2oNzGolFfMitfwrxC2zA&s=35
لاراول یه ابزار باحال برای این کار داره: Lottery
مثال:
تست ویژگی جدیده سایتمون فقط برای ۵٪ کاربران
فرض کن میخوای یه قابلیت جدید (مثلا طراحی تازهی داشبورد) رو فقط برای ۵٪ از کاربرها فعال کنی تا عملکردش رو بسنجی 👇🏾
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Lottery;
Lottery::odds(1, 20) // یعنی 5% احتمال
->winner(function () {
session(['new_dashboard' => true]);
})
->loser(function () {
session(['new_dashboard' => false]);
})
->choose();
حالا فقط ۵٪ کاربران این داشبورد جدید رو میبینن 🔥
بدون نیاز به feature flag سیستم یا تنظیمات پیچیده.
📌 کاربردهای دیگه ی Lottery در لاراول
مانیتورینگه سبک:
گرفتن لاگ کامل SQL در درصدی از ریکوئستها
تست A/B برای UX
اجرای وظایف سنگین فقط در بخشی از ریکوئست ها (مثلا آنالیز رفتار کاربر)
این Lottery از نسخهی 9.19 به بعد اضافه شده و توی اپهای پر ترافیک کمک میکنه بدون کاهش سرعت، رفتار سیستم رو هوشمندانه بررسی کنی.
#Laravel #Laravel_tip #لاراول
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/wendell_adriel/status/1978788530139635982?t=Hc2oNzGolFfMitfwrxC2zA&s=35
X (formerly Twitter)
Wendell Adriel (@wendell_adriel) on X
Laravel Tip 🚀
Did you know about the Lottery helper from Laravel? It's great for executing a piece of code only for a percentage of calls/requests.
In the example, we capture full SQL logs for 0.2% of requests, this can be used to spot N+1s and slow endpoints…
Did you know about the Lottery helper from Laravel? It's great for executing a piece of code only for a percentage of calls/requests.
In the example, we capture full SQL logs for 0.2% of requests, this can be used to spot N+1s and slow endpoints…
👍11❤3
در نسخهی جدید PHP 8.5 تابع filter_var() یه قابلیت کاربردیه تازه داره:
FILTER_THROW_ON_FAILURE
تا قبل ازین اگه اعتبارسنجی دیتا (مثلا ایمیل نامعتبر) fail میشد،
تابع فقط مقدار false برمیگردوند و باید دستی بررسیش میکردی.
اما حالا بااین گزینه، بجای برگردوندنه false، یک Exception پرتاب (throw) میشه 👇🏾
مزایاش؟
کد تمیزتر ، خطایابی سریعتر ، هماهنگی بهتر با Exception Handling در پروژههای مدرن PHP
#php #backend
@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/AshAllenDesign/status/1983537236403794361?t=IIrUtS60L_j-Rl6cHxtwlg&s=19
FILTER_THROW_ON_FAILURE
تا قبل ازین اگه اعتبارسنجی دیتا (مثلا ایمیل نامعتبر) fail میشد،
تابع فقط مقدار false برمیگردوند و باید دستی بررسیش میکردی.
اما حالا بااین گزینه، بجای برگردوندنه false، یک Exception پرتاب (throw) میشه 👇🏾
try {
$email = filter_var('not-an-email', FILTER_VALIDATE_EMAIL, FILTER_FLAG_THROW_ON_FAILURE);
}
catch (ValueError $e)
{
echo "ایمیل نامعتبر است!";
}مزایاش؟
کد تمیزتر ، خطایابی سریعتر ، هماهنگی بهتر با Exception Handling در پروژههای مدرن PHP
#php #backend
@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/AshAllenDesign/status/1983537236403794361?t=IIrUtS60L_j-Rl6cHxtwlg&s=19
X (formerly Twitter)
Ash Allen 🚀 (@AshAllenDesign) on X
Did you know PHP 8.5 adds a new FILTER_THROW_ON_FAILURE option for the `filter_var` function?
If the `filter_var` validation fails, it will trigger an exception to be thrown 🔥
If the `filter_var` validation fails, it will trigger an exception to be thrown 🔥
👍10🔥1👏1
📌 این سایت هم یک ابزار کاربردیه برای کسانی که میخوان از در دسترس بودن سایتها و APIهایشون مطمئن باشند.👌🏾
در سایت میتونید لینکهای مهمتون رو ثبت کنید تا بصورت خودکار بررسی بشن.
اگه لینک یا سرور شما خطا بدهد، بلافاصله از طریق ایمیل به شما اطلاع داده میشه.
⚙️ امکانات فعلیش:
• مانیتورینگ لینکها با بازههای زمانی قابل تنظیم
• هشدار از طریق ایمیل (از طریق پیامک و واتس اپ هم بزودی اضافه میشه)
• گزارش خطاها در داشبورد
مناسب برای:
توسعهدهندگان، مدیران سرور و صاحبان کسبوکار
(زبان فارسی هم بزودی اضافه میشه)
👇🏾
https://alixdev.ir/
در سایت میتونید لینکهای مهمتون رو ثبت کنید تا بصورت خودکار بررسی بشن.
اگه لینک یا سرور شما خطا بدهد، بلافاصله از طریق ایمیل به شما اطلاع داده میشه.
⚙️ امکانات فعلیش:
• مانیتورینگ لینکها با بازههای زمانی قابل تنظیم
• هشدار از طریق ایمیل (از طریق پیامک و واتس اپ هم بزودی اضافه میشه)
• گزارش خطاها در داشبورد
مناسب برای:
توسعهدهندگان، مدیران سرور و صاحبان کسبوکار
(زبان فارسی هم بزودی اضافه میشه)
👇🏾
https://alixdev.ir/
👍3
Golden Code pinned «📌 این سایت هم یک ابزار کاربردیه برای کسانی که میخوان از در دسترس بودن سایتها و APIهایشون مطمئن باشند.👌🏾 در سایت میتونید لینکهای مهمتون رو ثبت کنید تا بصورت خودکار بررسی بشن. اگه لینک یا سرور شما خطا بدهد، بلافاصله از طریق ایمیل به شما اطلاع داده میشه. …»
خیلی وقتا برای نمایش عددها، قیمتها یا درصدها کمی دردسر داریم ( ویرگول، اعشار، واحد پول، زبان کاربر و...)
اما جاوااسکریپت خودش یه ابزار آماده داره که همهی اینارو خودش انجام میده 👇🏾
چی هستش؟
این Intl.NumberFormat یه قابلیت Native و قدرتمنده
که اعداد رو بر اساس زبان و منطقهی کاربر فرمت میکنه.
نه نیاز به کتابخونه داریم نه regex بنویسیم
یه مثال:
👆🏾 همون عدد، ولی متناسب با زبان کاربر نمایش داده میشه.
برای پول و درصد :
مزایاش؟
• داخلی و سریع (بدون نصب کتابخونه)
• پشتیبانی از تمام زبانها و ارزها
• کنترل اعشار، جداکنندهها، و سبک نمایش
• ظاهر حرفهایتر برای کاربر 👌🏾
خلاصه:
وقتی Intl.NumberFormat هست، دیگه نیازی به کدنویسی اضافی برای فرمت اعداد نیست.
#JS #JavaScript #جاوااسکرپیت
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/KaraBharat/status/1984635931832328388?t=nyibER_ZCoXfs8nLIFoy7g&s=19
اما جاوااسکریپت خودش یه ابزار آماده داره که همهی اینارو خودش انجام میده 👇🏾
چی هستش؟
این Intl.NumberFormat یه قابلیت Native و قدرتمنده
که اعداد رو بر اساس زبان و منطقهی کاربر فرمت میکنه.
نه نیاز به کتابخونه داریم نه regex بنویسیم
یه مثال:
const num = 1234567.89;
new Intl.NumberFormat('en-US').format(num);
// 1,234,567.89 ✅
new Intl.NumberFormat('fa-IR').format(num);
// ۱٬۲۳۴٬۵۶۷٫۸۹ 🇮🇷
👆🏾 همون عدد، ولی متناسب با زبان کاربر نمایش داده میشه.
برای پول و درصد :
new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD'
}).format(4999.99);
// $4,999.99 💵
new Intl.NumberFormat('fa-IR', {
style: 'percent',
maximumFractionDigits: 1
}).format(0.853);
// ٪۸۵٫۳ 🔢مزایاش؟
• داخلی و سریع (بدون نصب کتابخونه)
• پشتیبانی از تمام زبانها و ارزها
• کنترل اعشار، جداکنندهها، و سبک نمایش
• ظاهر حرفهایتر برای کاربر 👌🏾
خلاصه:
وقتی Intl.NumberFormat هست، دیگه نیازی به کدنویسی اضافی برای فرمت اعداد نیست.
#JS #JavaScript #جاوااسکرپیت
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/KaraBharat/status/1984635931832328388?t=nyibER_ZCoXfs8nLIFoy7g&s=19
X (formerly Twitter)
Bharat Kara (@KaraBharat) on X
Intl.NumberFormat makes it so easy to format numbers and it's native 👇
#JavaScript
#JavaScript
👍7❤3
اگه با API Resources در Laravel کار میکنین، احتمالا همیشه با این حالت مواجه بودید:
تکراریه یکم؟
راه حل جدید در Laravel 12.29
حالا میتونین مستقیما در مدل مشخص کنید که از چه Resource و Resource Collection ای استفاده بشه:
استفاده ی ازش هم اسونه
بعده این کار، برای نمایش یک رکورد یا مجموعه کافیست:
متود toResource() بطور خودکار Resource یا Resource Collection مرتبط با مدل را برمیگردونه.
مزایاش؟
•کد تمیزتر و کوتاهتر
•مدل خودش مسئول انتخاب Resource مناسب میشه
•مناسب برای پروژههای بزرگ با چندین API Resource
📌 این ویژگی فقط از Laravel 12.29 به بعد فعال هست.
#Laravel #laravel_tip #لاراول
@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/AshAllenDesign/status/1986489784408182821?t=Ju0iw4KZdb1e0wg-OzajSQ&s=19
return PostResource::collection(Post::all());
return new PostResource($post);
تکراریه یکم؟
راه حل جدید در Laravel 12.29
حالا میتونین مستقیما در مدل مشخص کنید که از چه Resource و Resource Collection ای استفاده بشه:
use Illuminate\Database\Eloquent\Model;
use App\Http\Resources\PostResource;
use App\Http\Resources\PostCollection;
use Illuminate\Database\Eloquent\Attributes\UseResource;
use Illuminate\Database\Eloquent\Attributes\UseResourceCollection;
#[UseResource(PostResource::class)]
#[UseResourceCollection(PostCollection::class)]
class Post extends Model {}
استفاده ی ازش هم اسونه
بعده این کار، برای نمایش یک رکورد یا مجموعه کافیست:
return Post::first()->toResource(); // یک رکورد
return Post::all()->toResource(); // مجموعه
متود toResource() بطور خودکار Resource یا Resource Collection مرتبط با مدل را برمیگردونه.
مزایاش؟
•کد تمیزتر و کوتاهتر
•مدل خودش مسئول انتخاب Resource مناسب میشه
•مناسب برای پروژههای بزرگ با چندین API Resource
📌 این ویژگی فقط از Laravel 12.29 به بعد فعال هست.
#Laravel #laravel_tip #لاراول
@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/AshAllenDesign/status/1986489784408182821?t=Ju0iw4KZdb1e0wg-OzajSQ&s=19
X (formerly Twitter)
Ash Allen 🚀 (@AshAllenDesign) on X
As of Laravel 12.29, you can use the "UseResource" and "UseResourceCollection" attributes to explicitly define the resource class and resource collection class a Laravel model should use 🔥
👍10🔥3
در Laravel نسخه 12.16 به بعد یک rule جدید به نام in_array_keys معرفی شده :
یعنی آرایهی data باید حداقل یکی از کلیدهای name یا email رو داشته باشه، بدون نیاز به کد اضافی.
مزایای استفاده ازین rule :
کد تمیز و کوتاه
حذف بررسیهای دستی کلیدها
هماهنگ با دیگر قوانین اعتبارسنجی
📌 این rule فقط وجود کلیدها رو بررسی میکنه. برای بررسی نوع یا مقدار دیتا، از قوانین دیگه ای مثل string یا email استفاده کنین.
ی مثال دیگه:
درین مثال، اگه هیچکدوم از کلیدهای name، email یا password وجود نداشته باشن، Laravel به صورت خودکار خطا برمیگردونه و نیازی به نوشتن کد دستی نیست.
اما اگه فقط یکی از کلیدها موجود باشه، بدرستی انجام میشه بدونه خطا.
#Laravel #Laravel_tip #لاراول
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1988233512273543234?t=2ABEYuKulqMioiYyYh6Umg&s=19
$request->validate([
'data' => 'required|array|in_array_keys:name,email',
]);
یعنی آرایهی data باید حداقل یکی از کلیدهای name یا email رو داشته باشه، بدون نیاز به کد اضافی.
مزایای استفاده ازین rule :
کد تمیز و کوتاه
حذف بررسیهای دستی کلیدها
هماهنگ با دیگر قوانین اعتبارسنجی
📌 این rule فقط وجود کلیدها رو بررسی میکنه. برای بررسی نوع یا مقدار دیتا، از قوانین دیگه ای مثل string یا email استفاده کنین.
ی مثال دیگه:
$request->validate([
'user' => 'required|array|in_array_keys:name,email,password',
]);
درین مثال، اگه هیچکدوم از کلیدهای name، email یا password وجود نداشته باشن، Laravel به صورت خودکار خطا برمیگردونه و نیازی به نوشتن کد دستی نیست.
اما اگه فقط یکی از کلیدها موجود باشه، بدرستی انجام میشه بدونه خطا.
#Laravel #Laravel_tip #لاراول
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/mmartin_joo/status/1988233512273543234?t=2ABEYuKulqMioiYyYh6Umg&s=19
X (formerly Twitter)
Martin Joo (@mmartin_joo) on X
🔥 New validation in Laravel 12.21
There's a new `in_array_keys` validation that ensures specific keys exist in your arrays. No more manual array_key_exists checks.
There's a new `in_array_keys` validation that ensures specific keys exist in your arrays. No more manual array_key_exists checks.
👍10❤2
گاهی یک رشته داریم که عناصرش با "," یا ";" جدا شدن. با استفاده از split() و یک Regex ساده میتونیم هر دو رو همزمان جدا کنیم.
مثال:
الگوی بالا میگه هرجا ", " یا ";" دیدی جداسازی انجام بده برامون
#Javanoscript #جاوا_اسکریپت
#جاوااسکریپت
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/Shefali__J/status/1988564436559249609?t=3KBELet8DL6rU_-xqTFCDA&s=35
مثال:
let text = "apple,banana;orange,grape;melon";
let parts = text.split(/[,;]/);
console.log(parts);
// ["apple", "banana", "orange", "grape", "melon"]
الگوی بالا میگه هرجا ", " یا ";" دیدی جداسازی انجام بده برامون
#Javanoscript #جاوا_اسکریپت
#جاوااسکریپت
@GoldenCodeir 🔥
(بهمنبع و مثالش دقت کنید 👇🏾)
https://x.com/Shefali__J/status/1988564436559249609?t=3KBELet8DL6rU_-xqTFCDA&s=35
X (formerly Twitter)
Shefali (@Shefali__J) on X
JavaScript Tip💡
You can split a string at both commas and semicolons and create an array of individual elements.
You can split a string at both commas and semicolons and create an array of individual elements.
👍6🔥4
وقتی از get() استفاده میکنیم، کل رکوردهای جدول یکباره از دیتابیس خوانده میشن و داخل حافظه لود میشن.
این برای جدول های کوچیک مشکلی نداره؛ اما اگه با هزاران یا میلیونها رکورد سروکار داشته باشیم مصرف حافظه شدیدا بالا میره و ممکنه اسکریپت از کار بیفته.
لاراول قابلیت خوبی در اختیارمون گذاشته:
✅ lazy() — استریمکردن دادهها بهصورت مرحلهای
با lazy() رکوردهامون بصورت streaming لود میشن.
یعنی فقط بخش کوچکی وارد حافظه میشه، پردازش میشه و بعد آزاد میگرده. این روش فوقالعاده بهینه و کممصرف هست.
📌 مثال:
مزیت هاش؟
جلوگیری از مصرف سنگین RAM
مناسب برای پردازش جداول بزرگ
امنتر برای queue job ها و اسکریپتهای طولانی
اگه با دیتاستهای بزرگ سروکار دارین lazy() یکی از ترفندهاییه که بهتره بشناسید.
#Laravel #LaravelTip #لاراول
@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/laravelbackpack/status/1987135536189055477?t=qISIPBP7OR7Yxe41XToi-Q&s=35
این برای جدول های کوچیک مشکلی نداره؛ اما اگه با هزاران یا میلیونها رکورد سروکار داشته باشیم مصرف حافظه شدیدا بالا میره و ممکنه اسکریپت از کار بیفته.
لاراول قابلیت خوبی در اختیارمون گذاشته:
✅ lazy() — استریمکردن دادهها بهصورت مرحلهای
با lazy() رکوردهامون بصورت streaming لود میشن.
یعنی فقط بخش کوچکی وارد حافظه میشه، پردازش میشه و بعد آزاد میگرده. این روش فوقالعاده بهینه و کممصرف هست.
📌 مثال:
User::lazy()->each(function ($user) {
// پردازش هر کاربر
});مزیت هاش؟
جلوگیری از مصرف سنگین RAM
مناسب برای پردازش جداول بزرگ
امنتر برای queue job ها و اسکریپتهای طولانی
اگه با دیتاستهای بزرگ سروکار دارین lazy() یکی از ترفندهاییه که بهتره بشناسید.
#Laravel #LaravelTip #لاراول
@GoldenCodeir 🔥
(به منبع و مثالش دقت کنید 👇🏾)
https://x.com/laravelbackpack/status/1987135536189055477?t=qISIPBP7OR7Yxe41XToi-Q&s=35
X (formerly Twitter)
Backpack for Laravel (@laravelbackpack) on X
#Laravel lazy() vs get()
Did you know.... You can stream large datasets from the DB using lazy() — way more memory-efficient than get().
Did you know.... You can stream large datasets from the DB using lazy() — way more memory-efficient than get().
👍7❤3👎1