Golden Code – Telegram
Golden Code
738 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
Forwarded from کداکسپلور | CodeExplore (𝙰𝚖𝚒𝚗)
🐳اصلا #Docker چی هست و چه کاربردی داره؟

🔹اصلی ترین هدف داکر ساخت و ایجاد یک فضای ایزوله برای اپلیکیشن هایی هست که داریم؛ تا بتونیم به صورت مستقل از هم اجراشون کنیم و برای هر اپلیکیشن تمام وابستگی هاشو (dependencies) کنارش نصب کنیم...

◽️◽️مثال: شما یک وب سایت طراحی کردی، وقتی می بری روی سرور، باید php رو نصب کنی، mysql یا sqlserver یا هر دیتابیس دیگه ای رو برای پروژه نصب کنی، کلی افزونه نیاز هست که باید نصب کنی و ... !

🔹در صورتی که میتونی پروژت رو تویه یک container در بستر داکر docker قرار بدی و از اون موقع به بعد اون container رو هرجایی که می خوای ببری و دیگه بدون نصب هیچ چیزی اجراش کنی.

🔹🔹علاوه بر اینها لوگوی داکر از بین 84 نمونه طراحی شده توسط ریکی آسامانیس طراح گرافیک از اندونزی انتخاب شد.

نهنگی که حامل بسته‌هاییست که نماد 4 ارزش اصلی شرکت داکر است: expedition, automation, encapsulation,  simplification

☕️ @CodeExplore
👍3❤‍🔥11
بعضی اوقات در پروژه نیازه بررسی شه که آیا رکوردهای مدنظرمون در دیتابیس وجود دارن یا نه تا در صورت عدم وجود، ایجاد بشه.
خب واسه پیاده سازیه همچین چیزی متودای مختلفی در اختیارمون قرار داده شده که شاید بهترینش همین ()doesntExist باشه✔️

کاربردش؟؟
میایم میگیم در فرایند ثبت نام اگر کاربر alix در دیتابیس موجود نبود برو و alix رو با ایمیل، و سایر اطلاعاتی که گفته ایجاد کن.

مزایا؟
✔️ استفاده کمتر از شرط نویسی های پیچیده.
✔️ تاثیر مثبت بر کلین کد و خوانایی کد.
(در تصویر زیر تفاوتش با روشای دیگه بررسی شده)🪴🌴
@GoldenCodeir
#Laravel
#لاراول
#نکات_لاراول
#اموزشی_لاراول
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/OussamaMater/status/1790481645125918836?t=wUUKB89hWJZZHIVKQD6YDQ&s=35
❤‍🔥3👍1🔥1
Forwarded from کداکسپلور | CodeExplore (AmirMasoud)
♨️ PWA یا Progressive Web Application چیست؟

یک نوع اپلیکیشن وب است که از ترکیب ویژگی‌های مرورگر و ویژگی‌های اپلیکیشن سنتی بهره می‌برد تا به کاربران تجربه‌ای مشابه اپلیکیشن‌های تلفن همراه ارائه دهد. حالا اینکه این چه چیزیه و چطور کار می‌کنه، در ادامه با هم بررسیش میکنیم.

تصور کن که یه وب‌سایت داری که بدونی نیاز به دانلود و نصب جداگانه، تو مرورگرهای مختلف و بر روی انواع دستگاه‌ها (موبایل، تبلت یا رایانه)، مثل یک اپلیکیشن عادی رفتار می‌کنه. اینجوری کاربرها می‌تونن بدون درگیری با نصب و بروزرسانی‌های پیچیده، از دسترسی به ویژگی‌ها و محتوای به‌روز شده بهره‌مند بشن.

💢چند تا از قابلیت ها و ویژگی های مهم PWA

▪️قابلیت کارآیی آفلاین: PWA می‌تونه اطلاعات را در حالت آفلاین نیز نمایش بده و کاربران بتونن بدون دسترسی به اینترنت از ویژگی‌ها و محتوا استفاده کنن.

▪️پوش اپلیکیشن: می‌تونه به کاربران پیام‌ها و اطلاعیه‌ها فعالیت خودکار (Push) بفرسته، حتی زمانی که اپلیکیشن بسته است.

▪️نصب آسان: به‌طور مستقیم می‌تونه بر روی دستگاه‌های کاربران نصب بشه بدون نیاز به رفتن به فروشگاه اپلیکیشن.

▪️بهبود کارآیی: با بهینه‌سازی‌های حافظه و عملکرد، می‌تونه تجربه کاربری بهتری نسبت به وب‌سایت‌های سنتی ارائه بده.

#پست_پیشنهادی
#PWA
☕️ @CodeExplore
4👍1
بیشتره مواقع در فرایند تست نویسی ای که نیازه بررسی کنیم آیا رکوردمون از دیتابیس حذف میشه یا نه میایم از ()assertDatabaseMissing استفاده میکنیم تا ببینیم این یوزری که مشخص کردیم رو میتونه حذف کنه یا خیر.

این یه روش رایج هستش اما میتونیم بجاش از هلپر ()assertModelMissing استفاده کنیم که باعث بهینه تر شدن فرایند تست نویسی هم میشه. 🪴🌴

از جمله مزایای استفاده ازین هلپر :

✔️ قابل فهم تر شدن (حتی از نامش هم مشخصه که میخواد چیکار کنه)
✔️ کوتاه شدن کد (در تصویر قابل رویته)
✔️ تاثیر واضح و قابل رویت بر کلین کد
#Laravel
@GoldenCodeir

(به منبع و مثالش دقت کنین 👇🏾)
https://twitter.com/OussamaMater/status/1791200027156652060?s=19
🔥31
Forwarded from CodeCrafters (mahyar)
خب در ادامه پست های استفاده از ایندکس در جئداول دیتابیس قرار در این پست با Multi-Column Indexes اشنا بشیم/

ایندکس‌های چندستونی (Multi-Column Indexes) برای بهبود کارایی جستجو در جداولی که به طور مکرر از چندین ستون در کوئری‌های خود استفاده می‌کنند، بسیار مفید هستند. این نوع ایندکس‌ها بر روی بیش از یک ستون از جدول ایجاد می‌شوند و می‌توانند به طور همزمان ترتیب چند ستون را برای بهبود سرعت جستجو حفظ کنند.

ویژگی‌های ایندکس‌های چندستونی
1. ترتیب ستون‌ها:
   - ترتیب ستون‌هایی که در ایندکس تعریف می‌شوند بسیار مهم است.
   - ایندکس ابتدا بر اساس ستون اول مرتب می‌شود و سپس در داخل هر مقدار ستون اول، بر اساس ستون دوم و به همین ترتیب ادامه می‌یابد.
   - انتخاب ترتیب مناسب ستون‌ها بر اساس الگوهای کوئری معمول، می‌تواند تاثیر زیادی بر کارایی جستجو داشته باشد.

2. بهبود کارایی:
   - ایندکس‌های چندستونی می‌توانند کارایی کوئری‌هایی را که از این ستون‌ها در شرط WHERE، ORDER BY، و GROUP BY استفاده می‌کنند، بهبود بخشند.
   - در کوئری‌هایی که فقط از ستون اول ایندکس استفاده می‌کنند نیز می‌تواند بهبود کارایی ایجاد کند.

3. محدودیت‌ها:
   - ایندکس‌های چندستونی می‌توانند فضای بیشتری را نسبت به ایندکس‌های تک‌ستونی اشغال کنند.
   - به‌روزرسانی‌های جداولی که دارای ایندکس‌های چندستونی هستند می‌توانند زمان‌برتر باشند به دلیل نیاز به بروزرسانی ساختار ایندکس.

مثال‌ها و کد

فرض کنید یک جدول به نام employees داریم که شامل ستون‌های first_name، last_name، و department_id است و می‌خواهیم یک ایندکس چندستونی بر روی ستون‌های last_name و department_id ایجاد کنیم.

ایجاد ایندکس چندستونی
در SQL، ایجاد یک ایندکس چندستونی به شکل زیر است:

CREATE INDEX idx_lastname_department ON employees (last_name, department_id);


این ایندکس ابتدا بر اساس last_name و سپس بر اساس department_id مرتب می‌شود.

استفاده از ایندکس چندستونی در کوئری‌ها

مثال 1: جستجو بر اساس هر دو ستون
SELECT * FROM employees WHERE last_name = 'Doe' AND department_id = 5;

در این کوئری، هر دو ستون last_name و department_id استفاده شده‌اند، بنابراین ایندکس idx_lastname_department به طور کامل بهره‌برداری می‌شود و کارایی جستجو افزایش می‌یابد.

مثال 2: جستجو بر اساس ستون اول
SELECT * FROM employees WHERE last_name = 'Doe';

در این کوئری، تنها ستون last_name استفاده شده است که ستون اول ایندکس است. بنابراین ایندکس هنوز هم می‌تواند کارایی جستجو را بهبود بخشد.

مثال 3: جستجو بر اساس ستون دوم
SELECT * FROM employees WHERE department_id = 5;

در این کوئری، تنها ستون department_id استفاده شده است که ستون دوم ایندکس است. این کوئری نمی‌تواند از ایندکس idx_lastname_department بهره‌برداری کند و به احتمال زیاد از اسکن کامل جدول استفاده خواهد کرد.

به‌روزرسانی و حذف ایندکس
برای حذف یک ایندکس چندستونی:

DROP INDEX idx_lastname_department ON employees;


نکات مهم
1. انتخاب ستون‌ها: ستون‌هایی را انتخاب کنید که در بیشتر کوئری‌ها استفاده می‌شوند و ترتیب آنها را بر اساس بیشترین تاثیر بر کارایی جستجو تعیین کنید.
2. نگهداری و به‌روزرسانی: با افزایش تعداد ایندکس‌ها، عملیات نوشتن (INSERT, UPDATE, DELETE) کندتر می‌شود. به همین دلیل، باید توازن مناسبی بین تعداد ایندکس‌ها و نیازهای جستجو برقرار کرد.
3. تحلیل کارایی: استفاده از ابزارهای تحلیل کارایی (مانند EXPLAIN در SQL) برای بررسی تاثیر ایندکس‌ها بر کوئری‌ها مفید است.

با توجه به این نکات، ایندکس‌های چندستونی می‌توانند به طور قابل توجهی کارایی دیتابیس شما را بهبود بخشند اگر به درستی طراحی و استفاده شوند.


#database
#postgresql
👍3
این طراحیه route که مشاهده میکنین برای یه سری از مواقع میتونه باعث زیباتر شدن کدتون بشه :)

استفاده از این طرز نوشتاری میتونه در کلین کد و کوتاه تر شدنش موثر واقع بشه و از تکرار یه سری کلمات جلوگیری بشه...

(البته در نظر داشته باشید که باید کنترلر هاشون مشترک باشه)
@GoldenCodeir
#Laravel
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/PovilasKorop/status/1792854101908136134?t=NB4uthliq4x3FxpuaX91vg&s=35
11👍2
Golden Code
در لاراول چجوری میشه ستون number رو با استفاده از مایگریشن به جدول users اضافه کنیم؟
پس از اجرای کد زیر، کاربر چه وضعیتی را مشاهده خواهد کرد؟
php artisan down
Anonymous Quiz
26%
501
11%
502
50%
503
13%
419
👍32🔥2
"همونطور که میدونید در FormRequest میتونیم قوانین مدنظرمون رو در متود rules تعریف کنیم...

اما اگه بخواهید پیام خطای پیش فرض اعتبارسنجی رو برای یک فیلد خاص و یک قانون اعتبار سنجیه خاص تغییر بدین، کافیه متود ()messages رو به FormRequest اضافه کنید.

📌 بریم یه مثال بزنیم :
به تصویر توجه کنین، میخوایم پیام خطای مربوط به اعتبار سنجیه فیلد name برای قانون required رو تغییر بدیم، به راحتی میتونیم با استفاده از متود messages این کارو انجام بدیم.

خروجی :
اگر name خالی بمونه خطایی که تعریف کردیم نمایش داده میشه."
@GoldenCodeir
#Laravel
#لاراول
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/PovilasKorop/status/1793941262698971531?s=35
6👍2❤‍🔥1
ممکنه بعضی مواقع بخواید بررسی کنین که آیا همه عناصر در مجموعه ، تابع یک شرط هستن یا خیر.
لاراول با متود ()every همینکارو انجام میده.✔️

در دو مثال زیر ، یک شرط به طرق مختلف بررسی شده (آیا همه ی آیتم ها بزرگتر از ۲ هستند؟)
مثال ۱: پاسخ false
مثال ۲: یک آرایه خالی ایجاد شده و با متود every اقدام به بررسی شرط کردیم.
(پاسخ true میشه)
چرا؟
(چون عنصری وجود نداره که بخواد شرط رو نقض کنه)

📌 برخی مزایای متود every:
خواناتر شدن کد
تعامل خوب با اکثر متودای کالکشن
بهبود performance (وقتی شرط false بشه عملیات متوقف میشه)"
@GoldenCodeir
#Laravel
#لاراول
(به منبع و مثال توجه کنید👇🏾)
https://twitter.com/OussamaMater/status/1795907677702193378?t=RNSJQRVQfui92BI_BfOZ2g&s=19
2❤‍🔥1👍1🔥1
Forwarded from کداکسپلور | CodeExplore (Bardia)
فرق گیت هاب و گیت لب چیه ، از کدومش استفاده کنم !! 🧐

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

🔻 تفاوت ها :

در قدم اول اینکه میدونین بیس و کار هر دو تا پلتفرم یکی هستش و هر دو ساخته شدند تا یک کاری رو انجام بدن اما !

گیت لب امکان اجازه به کاربران در جهت استفاده از مخزن خصوصی به صورت رایگان را می‌دهد. در حالی که گیت هاب برای مخزن‌های شخصی خود به پرداخت‌های ماهانه و یا سالانه نیازمند است. به این دلیل که github به کمپانی مایکروسافت واگذار شده است.

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

در مورد سابقه این دو سرویس ، گیت لب یک مقدار از گیت هاب کارکشته تر است اما گیت هاب در این چند وقت واقعا رشد عجیبی نسبت به گیت لب کرده و اکثر توسعه دهندگان از سرویس گیت هاب استفاده می کنند .

#پست_پیشنهادی
☕️ @CodeExplore
👍6
Forwarded from Pishro App
🩷 قابلیت Property Hooks در PHP 8.4


💡 این ویژگی که قراره توی PHP 8.4 بیاد به ما این امکان رو میده تا روش دسترسی به propertie ها رو ساده تر کنه!👍


بصورت کلی Property webhook به برنامه‌نویسان این امکان رو می‌ده تا رفتار پیش‌فرض دسترسی به properties و تغییر آن‌ها را با استفاده از توابع "get" و "set" تغییر دهند. این قابلیت از زبان‌هایی مانند Kotlin، C# و Swift الهام گرفته شده است.

🖱️ نحوه کارکرد Property Hooks

Property Hooks دو نوع "hook" برای دسترسی و تغییر مقدار properties فراهم می‌کند:

get:
این hook برای تعیین منطق دلخواه هنگام خواندن مقدار property استفاده می‌شود. به عنوان مثال، می‌توانید property را قبل از برگرداندن مقدار آن تغییر دهید.

set:
این hook برای تعیین منطق دلخواه هنگام تنظیم مقدار property استفاده می‌شود. به عنوان مثال، می‌توانید مقادیر را اعتبارسنجی یا تغییر دهید قبل از اینکه به property اختصاص داده شوند.
class User {
    public string $fullName {
        get => $this->first . " " . $this->last;
        set {
            [$this->first, $this->last] = explode(' ', $value, 2);
        }
    }

    public function __construct(public string $first, public string $last) {}
}

$user = new User('John', 'Doe');
echo $user->fullName; // John Doe
$user->fullName = 'Jane Smith';
echo $user->first; // Jane

👾 مزایای استفاده از Property Hooks

کاهش کدهای تکراری: نیازی به تعریف متدهای getter و setter برای هر property نیست.
انعطاف‌پذیری بیشتر: امکان تعریف منطق دلخواه برای دسترسی و تغییر properties.
کد خواناتر: خوانایی و نگهداری کدها بهتر می‌شود.

ویژگی Property Hooks قابلیت‌های متعددی برای بهبود و ساده‌سازی دسترسی به properties فراهم می‌کنند و از این جهت یک ابزار قدرتمند برای توسعه‌دهندگان PHP خواهند بود.

#php

👾 pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51🤮1
لاراول هلپری با نام ()optional در اختیارمون گذاشته که وقتی ازش استفاده کنیم میتونیم بر نتایج خطاهای مربوط به مقدار null ، مدیریت بهتری داشته باشیم تا برنامه به دلیل null بودن یک مقدار ، با خطا مواجه نشه...

تصویر رو مشاهده کنید
اگر مقدار برای user برابر null بشه دیگه خطایی رخ نمیده.(بدلیل استفاده از optional)
اما اگه دیتایی داشته باشه ، اون callback براش اجرا خواهد شد.✔️
#Laravel
#لاراول
#اموزشی_لاراول
#کد_نویسی
#برنامه_نویسی
@GoldenCodeir
(به منبع و مثال دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1796866799663042779
2👍21🔥1
Forwarded from CleverDevs (Mahdi)
👈 5 نکته برای بهبود UI, UX سایتتون(پارت1) :

1. Isolation


یه روانشناس آلمانی به اسم Hedwig von Restorff تو سال 1933 طی یه آزمایش چند تا آیتم شبیه به هم و یک آیتم متفاوت رو کنار هم گذاشت و طبق بررسی مشخص شد که اون آیتم متفاوت کنار آیتم‌های یکسان، توجه خیلی بیشتری رو جلب میکنه.

حالا تو سایت چه استفاده‌ای داره؟
میتونیم توی اسلایدری که محصولمون رو گذاشتیم، اسلایدی که زودتر باید فروش بره رو به یه نحوی نسبت به بقیه اسلاید ها مجزا کنیم(مثل تصویر).

#UX #UI src
@CleverDevs - @CleverDevsGp
👍21💯1
"اگر نیاز داشته باشیم در کوئری نویسی از sql خام برای دریافت دیتای حاصل از کوئری استفاده کنیم درین شرایط میتونیم از متودی تحت عنوان ()rawValue استفاده کنیم.

در مثال سوم خواسته شده که دو ستون first_name و last_name که مربوط به یوزر مدنظر هستند رو در کنار هم تحویل بده."
@GoldenCodeir
#Laravel
#لاراول
#برنامه_نویسی
این مقاله فارسی هم خوب بود :
https://vrgl.ir/Xppdh
(📌 به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1797953958335725973
👍32🔥2💯1
Forwarded from CleverDevs (Mammad)
-اصل Explain Yourself in Code در کلین کد

این اصل میگه که وقتی میشه کد رو جوری نوشت که خودش کارشو توضیح بده چه نیازی به کامنت اضافس ؟
یعنی چی ؟ مثال پایین رو ببینید

// Check to see if the employee is eligible for full benefits
if ((employee.flags & HOURLY_FLAG) &&
(employee.age > 65))


این کد بهتره یا اینکه جای کامنت این شرط رو توی تابع با اسم درست بزاریم ؟ مثل این
if (employee.isEligibleForFullBenefits())


کلا دوثانیه وقتتون رو میگیره تا جای کامنت این کارو بکنید. بیشتر مواقع اینکه یه تابع بسازی که بتونه کد رو هم توضیح بده بهتر از کامنت نوشتنه

#CleanCode
@CleverDevs - @CleverDevsGp
👍8🔥32👎1
"گاهی ممکنه نیاز بشه عددی طولانی به کاربر نمایش بدیم ، درین شرایط خواندن عدد واسه کاربر کمی دشوار میشه.
برای نمایش دادن بهتر برخی اعداد به کاربر، میتونیم از هلپری بانام Number استفاده کنیم.✔️

مثال شماره ۱:
عدد ۱۰۰۰ رو دادیم به هلپر، خروجی: 1thousand

در مثال ۲ هم عدد رو رُند کرده برامون.

مثال شماره ۳(تصویر):
اینجا که عدد 12340000 رو داریم،برای نمایش بهتر به کاربر میتونیم ازین هلپر استفاده کنیم.
حالا خروجیش چی میشه؟ 1.23million
چرا؟ چون بر اساس دو رقم اعشار تعیین شده."

@GoldenCodeir
#Laravel
#لاراول
(به منبع و مثال دقت کنید👇🏾)
https://x.com/OussamaMater/status/1797365006935248910?s=19
👍51💯1
Forwarded from Pishro App
نوشتن کد مانند ایراد سخنرانی است. اگر از کلمات بزرگ زیادی استفاده کنید، مخاطبان خود را گیج می‌کنید. اگر هر کلمه را تعریف کنید، مخاطبان خود را به خواب می‌برید.

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

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


#clean_code

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1
Forwarded from Md Daily
چند Best Practice در طراحی REST API

امروزه که همه چی به هم وصله، REST APIs با طراحی خوب، پایه و اساس برنامه‌های کاربردی کارآمد و قابل ارتقا هستن.

نوشتن دیزاین های REST API تمیز به چند دلیل خیلی مهمه:

استفاده راحت‌تر: یه API با طراحی خوب، کاربرپسند و سادست، و برای توسعه‌دهنده‌ها با هر سطحی قابل استفاده‌ست. اینجوری دیگه نیازی به صرف زمان زیاد برای یادگیری نیست.

نگهداری راحت‌تر: کد تمیز، نگهداری رو راحت‌تر می‌کنه. با این کار پیدا کردن و رفع اشکال، اضافه کردن قابلیت‌های جدید و ارتقای API ساده‌تر و هزینه‌های توسعه هم کم میشه.

کاهش زمان توسعه: با مشخصات API دقیق و مستندات شفاف، میشه خیلی سریع‌تر برنامه‌نویسی کرد چون دیگه نیازی به حدس و گمان و تست‌های مفصل نیست. اینجوری هم در زمان و هم در منابع صرفه‌جویی میشه.

مقیاس‌پذیری بیشتر: یه طراحی تمیز، با ارائه یه معماری ماژولار که به راحتی قابل گسترشه، امکان مقیاس‌پذیری راحت رو فراهم می‌کنه. اینجوری API می‌تونه با نیازهای برنامه شما رشد کنه و مشکلی پیش نیاد.

استفاده مجدد بیشتر: یه API با طراحی خوب رو میشه تو چند برنامه دیگه هم استفاده کرد، اینجوری دیگه نیازی به تکرار کار نیست و همه چی منظم‌تر میشه. اینجوری توسعه برنامه‌ها ساده‌تر میشه و در زمان و تلاش هم صرفه‌جویی میشه.

مستندات بهتر: طراحی‌های تمیز، مستندسازی رو هم ساده‌تر می‌کنن و نحوه کارکرد API و نحوه استفاده درست ازش رو به طور کامل برای برنامه‌نویس‌ها توضیح می‌دن. اینجوری همه چی شفاف میشه و استفاده از API هم راحت‌تر میشه.


رولز ها یا قوانین URI

ساختار یه URI به شکل زیره:
scheme :// authority / path [?query][#fragment]


مثال:
https://soccer.api.org/teams/dortmund/players?name=Rona#2


تو دنیای URI دو نوع منبع (resource) داریم:

منابع مجموعه (Collection resources): این نوع منبع، مجموعه‌ای از منابع دیگه رو در خودش داره. میشه اون رو به یه جدول تو دیتابیس تشبیه کرد. مثلا میشه یه منبع مجموعه به اسم users داشته باشیم که لیستی از تمام کاربرها رو در خودش داره.

منابع تکی (Singleton resources): ا
ین نوع منبع، فقط شامل یه منبع واحده. میشه اون رو به یه رکورد تو دیتابیس تشبیه کرد. مثلا میشه یه منبع تکی به اسم users/123 داشته باشیم که اطلاعات مربوط به یه کاربر خاص با شناسه ۱‍۲‍۳ رو نشون بده

نکات مهم طراحی Rest Api

۱. منابع Collection باید جمع (plural) باشن :

 soccer.api.org/teams/dortmond
soccer.api.org/team/dortmond


۲. منابع Singleton باید مفرد (singular) باشن و با شناسه یکتاشون (unique id) جایگزین بشن:

فرض کن میخوای اطلاعات یه بازیکن خاص رو نمایش بدی، بجای استفاده از players/Ronaldo بهتره از شناسه عددی یا کد اون بازیکن استفاده کنی، مثلا players/12345.
 soccer.api.org/teams/dortmond/players/58c1aaae-205a-11ef-aeea-a64c74618950

۳. اسلش ته آدرس رو حذف کنید:

 soccer.api.org/teams/dortmond/players
soccer.api.org/teams/dortmond/players/


۴. برای بهتر خونده شدن، از خط تیره (-) به جای زیرخط (_) استفاده کنید:
 api.blog.com/blogs/this-is-my-blog
api.blog.com/blogs/this_is_my_blog


۵. تو مسیرهای URI از حروف کوچک استفاده کنید:

 api.example.com/my-api/my-resource
api.example.com/My-Api/My-Resource


۶. تو URI ها از پسوند فایل استفاده نکنید:

 api.example.com/api/resource
api.example.com/api/resource.json



۷
. از اسم فانکشن های CRUD تو URI استفاده نکنید:

برای عملیات ایجاد، خواندن، بروزرسانی و حذف منابع، از اسم هایی مثل create, read, update, delete تو URI استفاده نکن. بجاش از Http Method های استاندارد استفاده کن.
DELETE api.example.com/api/resource
GET api.example.com/api.resource/delete


 GET /users
GET /getUsers

۸. بخش کوئری (query) تو URI فقط برای منابع Collection قابل استفاده است:

 GET /users?role=admin
GET /users/admin


۹. از بخش کوئری برای اسکرول (paging) کردن نتایج منابع مجموعه استفاده کنید:

 GET /users?pageSize=25&pageStartIndex=50


نسخه بندی API (Versioning)

نسخه بندی API برای موارد زیر اهمیت داره:

حفظ سازگاری قبلی (Maintaining backward compatibility)

تضمین یک API سازگار و با طراحی خوب: استفاده از نام‌گذاری‌های یکسان تو همه نسخه‌ها به یه تجربه کاربری خوب کمک میکنه. تغییر endpoint این تجربه رو بهم میریزه و نسخه بندی به جلوگیری از این موضوع کمک میکنه.

چند استراتزی برای نسخه بندی API:

URI Versioning (پیشنهادی):

 GET /api/v1/users
GET /api/v2/users



Header Versioning:

GET /api/users
Headers: { "X-API-Version": "1" }

GET /api/users
Headers: { "X-API-Version": "2" }



🆔 @MdDaily
6🔥2👍1💅1
در لاراول یه هلپر مفید داریم با نام literal که بهمون این امکان رو میده با استفاده از آرگومان های نامگذاری شده، یک آبجکت php بسازیم.

مزایاش ؟؟
افزایش خوانایی کد .
ساده تر شدن نحوه مدیریتشون .( مخصوصا در شرایطی که تعداد آرگومان ها زیاده مدیریت برامون ساده تر میشه با استفاده از هلپر literal ).

به مثالش در تصویر دقت کنین تا بهتر براتون جابیفته.
#Laravel
#لاراول
#برنامه_نویسی_وب
#برنامه_نویسی
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1800258725078274249?s=19
👍92💯2
Forwarded from Pishro App
💡یکی از نکاتی که باعث میشه کد شما تمیزتر و بهتر باشه استفاده از نام درست و صحیح برای متغییرها، کلاس ها، توابع و... هست


نام متغیرها باید معنی دار و توصیف کننده داده هایی باشد که توی اون متغیر وجود داره.

اینکار باعث میشه خوانایی کد بالاتر و درک اون ساده تر بشه.

برای نمونه قطعه کد زیر رو ببینید:


// Bad Example
int x = 5;

// Good Example
int numberOfStudents = 5;




بصورت کلی همونطور که گفتم سعی کنید از اسم های خلاصه شده و نامفهوم در هیچ کجای کد استفاده نکنید🍷

#clean_code


👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1🔥1
در لاراول وقتی با کالکشن ها کار می‌کنیم اگر بخوایم اولین آیتمی که با شرط مورد نظرمون مطابقت داره رو بگیریم، میتونیم از متود ()sole استفاده کنیم.👌🏾

اگر هم بیشتر از یه آیتم با شرط مطابقت داشته باشه exception برمیگرده.
همچنین اگر هیچ آیتمی مطابق با شرط نباشه باز هم exception برمیگرده.

طرز کارش سادست،کافیه به تصویر دقت کنین ✔️
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1800982923039912370?t=Xc2MWc7xLWTSTsRWfQWfDQ&s=35
👍5