Golden Code – Telegram
Golden Code
737 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
"میتونیم resources controller هامونو با استفاده از متودی به نام ()resources گروه بندیشون کنیم(بصورت گروهی ایجاد کنیم).
طبیعتن در clean code تاثیره خودشو میزاره🌴🪴"

(در نظر داشته باشین که متود resource بصورته آرایه route رو تحویل میگیره )
@GoldenCodeir
📌به منبع و تصویرش توجه کنین تا تفاوت استفاده از این متود و عدم استفاده ازش رو بهتر حس کنین:)👇🏾
https://x.com/OussamaMater/status/1765047738423501309?s=09
4👍1🔥1
"برای ایمپورته کلاسهای php به محیطه blade ، علاوه بر تگ های php خام میتونیم از دایرکتیو ()use@ هم استفاده کنیم ✔️ "

(اگر هم چیزه زیادی از دایرکتیو و حتی چگونگیه ایجاد دایرکتیو نمیدونین این مقاله ی فارسیه هم مفیده براتون:🪴🌴
https://roocket.ir/articles/creating-the-route-blade-directive )

@GoldenCodeir
(📌به منبع و تصویرش توجه کنین تا چگونگیه استفاده ازش رو متوجه شین👇🏾)
https://x.com/iamgurmandeep/status/1768346217258315930?t=qi5Fb8N4oyG_TTclNxOaNg&s=35
👍32
"کالکشن ها متودای متعدد و متفاوتی دارن.
اما اگه خواستین متود های شخصی برای خودتون ایجاد کنین ، میتونید این کارو با استفاده از macro به راحتی انجام بدین✔️

📌 کار پیچیده ای پیش رو ندارید،
فقط متود رو داخل AppServiceProvider تعریف می کنید و بعد میتونید ازش در هرجای کد هاتون که خواستید استفاده کنید..".🌴🪴
@GoldenCodeir
(پیچیده نیس،به منبع و تصویرش توجه کنین تا کاملن براتون جا بیفته👇🏾)
https://x.com/PovilasKorop/status/1767864437891878980?t=7RFF35yqEY5lNOmQDmTfSg&s=35
👍52
"میتونیم از متود ()whenMissing برای ریکوئست آبجکت استفاده کنیم که در صورت عدم وجود اون ورودی فراخوانی میشود.🌴🪴

توضیحاته تکمیلی:
کاربردش فقط محدودبه این مثال نمیشه،یکی از جاهایی که احتمالن به کارمون میاد در routeها هستش✔️"
@GoldenCodeir
(به منبع و مثالش توجه کنین ، در صورت فراخوانیه WhenMissing عملیاته مربوطه اجرا میشه👇🏾)

https://x.com/iamgurmandeep/status/1764380757294789081?t=vGONcoP-tZu59dFxwq79JQ&s=35
👍41
"با Str::password میتونید یک پسورد امن و رندوم ایجاد کنین. رمز عبورمون با ترکیبی از حروف، اعداد ،نماد ها و فاصله ها شکل میگیره .✔️

📌نکته ی اصلی ای ‌که باید بهش اشاره کرد:
بطور پیشفرض پسورد ها ۳۲ کارکتر خواهند داشت.
به مثال نگاه کنین ، در مثاله اول پسوردی ۳۲ کارکتری تحویل داد(دیفالت)"🌴🪴
در مثال دوم هم تعداد کارکتر ۱۲ قرار داده شد"
@GoldenCodeir
(به منبع و مثالش توجه کنین👇🏾)
https://x.com/iamgurmandeep/status/1762570986904310249?t=lvgXfC0_SARIcvufbQVqDg&s=35
👍51
"در ولیدیشن میتونیم از "required_if_accepted" استفاده کنیم که تضمین میکنه در صورته پذیرفته شدنه یه فیلد، فیلده تحته اعتبارسنجی پر کردنش اجباریه.✔️
گیج نشین 😁
به مثال که توجه کنین به خوبی متوجه میشین،
در مثال یک:
درصورتی company_name رو اجباری کن که is_company برابره true باشه... "
@GoldenCodeir
📌(به منبع و مثالش دقت کنین👇🏾)
https://x.com/iamgurmandeep/status/1763678793510568388?t=bSs19il9kcLM3m508NUKww&s=09
👍10👏1
"علاوه بر متود ()findOrFail میتونیم از متود ()findOr هم استفاده کنیم که در پاسخ یا یک instance از مدل رو برمیگردونه واسمون یا اگه پیدا نشد کاری که از پیش واسش تعیین کردیم‌رو اجرا میکنه."

به مثال دوم دقت کنین، اگر اون id مدنظرمون رو پیداکنه واسمون میاره ، در غیر اینصورت Not Found رو نمایش میده(همونطور که ازش خواستیم ).🌴🪴
@GoldenCodeir
(به منبع و مثال دقت کنین👇🏾)
https://x.com/iamgurmandeep/status/1755594486691086669?s=20
👍9🔥1
"لاراول متودی هم داره تحت عنوان ()withExists که این امکان رو در اختیارمون میزاره تا بتونیم به بررسی وجود یا عدم وجود relation بین مدل ها بپردازیم.
📌 برخی مزایای این متود بطور خلاصه :

در بهبود performance و همچنین مفهوم clean code نقش موثری داره".✔️

نکته:پاسخ این متود بصورتboolean خواهد بود.
در پاسخ is_author در مثال زیر یک نتیجه true یا false دریافت میکنیم.🌴🪴
@GoldenCodeir
(به منبع و مثالش توجه کنین👇🏾)
https://twitter.com/OussamaMater/status/1770520181132968014?t=7ntUBWOzvHiZJ21BjwfXpQ&s=19
👍7🔥1
"در api میتونین تعداد ریکوئست هایی که کاربر میتونه ارسال کنه در یک بازه ی زمانی رو واسش محدودیت ایجاد کنین.✔️

در مثال زیر، منظور از '60,1:throttle' چیه؟
با قراردادنه این دستور تعیین میشه هر کاربر در یک دقیقه میتونه نهایتن ۶۰ ریکوئست ارسال کنه.
اینکار تا حدی میتونه از سو استفاده های احتمالیه برخی کاربران جلوگیری کنه."🌴🪴
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/laravelbackpack/status/1702280355552661534?s=35
👍7👏1
"هلپرهایی هم داریم تحت عنوانthrow_if و throw_unless که استفاده ازشون در کلین کد میتونه مفید باشه.بریم ببینیم چه جاهایی کاربرد داره.

در مثال سه با استفاده از هلپر throw_unless گفته شده‌ اگر کاربر admin نبود اون exception رو اجرا کن.🌴🪴
در مثال دو(throw_if)هم همون خروجیه مثال بالا دریافت میشه با این تفاوت که نقیضش بررسی میشه.
که خب خواناییه کد رو نسبت به شرط گذاریه عادی بالاتر برده...👌🏾"
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/OussamaMater/status/1771604644692734425?t=RaBarVLAzRsdxBusP1RHPQ&s=35
👍74
"در هنگام فراخوانی ()Model::all ما حتی این امکان رو داریم که مشخص کنیم کدام ستون ها در اختیارمون قرار بگیره👌🏾

همونطور که در مثالش ملاحظه میکنین، ممکنه اصلن از مدل User نخوایم همه ی ستون هاشو برامون بیاره و صرفا id, name ,email‌ رو نیاز داشته باشیم ، درین شرایط باید اینگونه درخواست رو بنویسیم: 🌴🪴"
User::all(["id","name","email"]);
@GoldenCodeir
(به منبعش و مثال مربوطش توجه کنین👇🏾)
https://x.com/PovilasKorop/status/1772937867632750866?t=3tJHIxAeFAhrR_JqZEW1ng&s=35
👍8
"میتونیم در لاراول تاریخ رو با متود هایی مثل ()whereMonth و یا ()whereDate در کوئری زدن مورد بررسی قرار بدیم✔️ خب حالا بریم مثال دو در تصویر منبع (whereMonth )رو یه نگاه بندازیم:

در ورودی عدد ۱۲ قرار داده شد پس طبق اون کوئری، باید همه ی کاربرانی که در ماه دوازدهم ایجاد شدن برامون برگرده.🪴🌴
(البته همونطور که میدونین این‌سبک از کوئری زدن‌ ها کمی کند هستن)"
@GoldenCodeir
(در منبعُ مثالش به متود های بیشتری اشاره شده👇🏾)
https://x.com/PovilasKorop/status/1773276599493816429?t=6IaDxDSDYG_rKhOj0n7Qqg&s=35
👍7🔥1
"اگه خواستین برخی از ستون های دیتابیس رو در جدولی خاص افزایش بدین کافیه از تابع ()increment استفاده کنین.
در جایی مثل آمار بازدیدکنندگان کاربرد داره.👌🏾

قرار هم نیست صرفا یک واحد اضافه کنه، خودمون هم میتونیم تعیین که طبق چه الگویی افزایش پیدا کنه..
طرز کارشم اینجوریه که در ورودیه شماره یک نام ستون، ورودیه دوم تعداد واحدی که میخوایم اضافه شه (در مثال زیر ۵۰ هست)✔️"
@GoldenCodeir
(به منبع و مثال دقت کنین👇🏾)
https://twitter.com/PovilasKorop/status/1773620614089109849?t=kF_8my-XYkuOBXFmvuXlWQ&s=19
👍62
متود ()firstOrCreate سعی میکنه نتیجه رو در ستونی که بهش گفتیم پیدا کنه.
اگر رکورد در دیتابیس پیدا نشد ، یه رکورد جدید ایجاد میشه.
📌 حالا بریم بیشتر بررسیش کنیم:
به مثال زیر دقت کنین، اگر در جدول posts یک رکورد با 'noscript‌' = 'laravel_tip' وجود داشته باشه که میاره واسمون،
اگه نباشه می‌سازه برامون با همین اطلاعاتی که گفتیم بهش...✔️
@GoldenCodeir
(به منبع و مثالش دقت کنین دوستان👇🏾)
https://x.com/iamgurmandeep/status/1771610947188125964?t=qjlRxwmTRrWyrYtat9GLnA&s=09
👍3
"اگه نیاز داشتین که چند کلمه ی اول از یک متن رو که از دیتابیس دریافت شده نمایش بدین میتونید خیلی راحت با استفاده از متود words این کارو انجام بدید ،مثال:
str($denoscription)->words(20);
الان همونطور که مشخص کردیم میره فقط ۲۰ کلمه ی اول رو از denoscription$ میگیره"
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://twitter.com/PovilasKorop/status/1775097098364403845?t=CVFfcHZGVvv44YfXGanlYg&s=19
🔥5👍2
ممکنه بخوایم مطمئن شیم که یه کالکشن، اون آیتم مدنظرمون رو بطور یکتا داره یا نه.
درین شرایط بجای استفاده از متود ()count میتونیم از ()containsOneItem هم استفاده کنیم.
حالا چجوری کار میکنه؟

اگه تعداد اون آیتم مدنظرمون در کالکشن ، بیشتر از یه دونه باشه پاسخ false میشه، اگر فقط یکی از اون آیتم باشه پاسخ true میشه.🪴🌴
(یه مثال از کاربردش در مبحث سطوح دسترسی میتونه باشه.)
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/OussamaMater/status/1774534728713908404?t=53_Nco2oPHG1m4gBU75WmQ&s=35
👍4
با استفاده از متود ()except میتونیم یک عنصر یا یه آرایه رو از دیتای session حذف کنیم،
حالا کجاها کاربرد داره؟
یه جاهایی ممکنه فقط پسورد رو نخوایم بفرستیم(بنا بر دلایل امنیتی)، خب اینجور جاها خیلی این متود کاربرد داره...
در مثال زیر وقتی خروجی بگیریم، name حذف شده (همونطور که تعیین کرده) و باقیه اطلاعات موجود خواهند بود
@GoldenCodeir
(به منبع و مثالش دقت کنین 👇🏾)
https://x.com/iamgurmandeep/status/1745407710492016867?t=p4n1JqewzD5lrq9rusl8Xg&s=35
👍41
در لاراول ۱۱ اگه قصد داشته باشین با آرایه های چند بعدی کار کنین علاوه بر همون هلپر collect که از ورژن های پیشین در اختیارتون بود میتونین از هلپر fluent هم استفاده کنین.
کار با هلپر fluent نسبت به collect میشه گفت راحت تره(از لحاظ دسترسی به دیتای آرایه) به مثال توجه کنین و تفاوت واضح fluent و collect رو مشاهده کنین...🪴🌴
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/MilwadDev/status/1775618875473727968?t=WgqvC-fxB0RDgC-v4NI9yg&s=35
👍7🔥3
در نسخه ۱۱ لاراول اگه نیاز به بررسی دیتای session داشته باشیم میتونیم خیلی راحت با متود ()hasAny عملیات مربوطه رو انجام بدیم...✔️
مستقیم با یک hasAny میتونیم آیتم های مدنظرُ مشخص کنیم(نیازی به کدای تکراری نیست) خودش متوجه میشه هرکدوم از آیتم ها که true شد باید عملیات مربوطه انجام شه🪴🌴

ما کافیه آیتم های مدنظرمونو بصورت آرایه مشخص کنیم
@GoldenCodeir
به منبع و مثالش توجه کنین👇🏾
https://twitter.com/MilwadDev/status/1776754258525704363?t=DEOQFvK89Eh058peKNTlmQ&s=19
👍5🔥1
از عبارت match میتونیم برای پیاده سازیه منطق های شرطیه تمیز تر بهره ببریم.
در مثال زیر، اگه مقدار status$ با هیچکدوم از الگو هایی که داریم مطابقت نداشته باشه همون حالت دیفالت اجرا خواهد شد .
این عبارت از نسخه ۸ php در دسترسه.🪴🌴
@GoldenCodeir
(پیچیدگیه خاصی هم نداره،به منبع و مثالش توجه کنین👇🏾)
https://x.com/laravelbackpack/status/1777660236398244260?t=LpLUOgmUyjt-sY58J0d3cw&s=35
👍7🔥2
در php این قابلیت در اختیارمون هست که حتی از ()str_replace جهته جایگزین کردنه چندین رشته در یه جمله استفاده کنیم.
اگر ترتیب رو در آرایه اشتباه وارد کنیم ،خروجی هم تحت تاثیر اشتباه قرار میگیره پس باید به ترتیبشون توجه داشت!🪴🌴
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/PovilasKorop/status/1775131825788112926?t=sAYUqvuOnFg0ZgdrDdruKg&s=35
3👍1🔥1