فرض کن یه تابع داری که فقط باید با یک نوع خاص از داده کار کنه.
روش قدیمی اینه که داخل تابع مدام چک کنی:
if (!is_string($value)) {
throw new Exception('Invalid value');
}ولی در PHP مدرن میتونی این قرارداد رو از همون اول مشخص کنی:
function generateSlug(string $title): string
{
return strtolower(str_replace(' ', '-', $title));
}
حالا تابع رسماً اعلام میکنه:
ورودی باید
string باشه و خروجی هم string.این موضوع وقتی پروژه بزرگ میشه خیلی مهمتر میشه.
چون به جای اینکه هر توسعهدهنده مجبور باشه حدس بزنه:
«این تابع چه چیزی میگیره؟ چی برمیگردونه؟»
خود Signature تابع جواب رو میده.
حتی میتونی برای ساختارهای پیچیدهتر از:
int
string
bool
array
object
Union Types
Nullable Types
استفاده کنی.
💡موضوع Type Hint فقط برای جلوگیری از Error نیست؛ یه جور قرارداد بین بخشهای مختلف کده.
هرچی پروژه بزرگتر بشه، این قراردادها ارزش بیشتری پیدا میکنن.
@CodeVerse_dev