آموزش رایگان PHP

آموزش جامع تعریف تابع سفارشی در PHP طبق استاندارد گوگل و PSR

16م تیر 1405 محراب حسن زاده
آموزش جامع تعریف تابع سفارشی در PHP طبق استاندارد گوگل و PSR

مقدمه؛ چرا تعریف استاندارد توابع در PHP حیاتی است؟

توابع (Functions) سنگ بنای توسعه نرم‌افزار هستند. نوشتن یک تابع در PHP کار ساده‌ای است؛ اما نوشتن تابعی که امن، خوانا، بهینه و منطبق بر استانداردهای جهانی باشد، مرز بین یک برنامه‌نویس تازه‌کار و یک توسعه‌دهنده حرفه‌ای است. گوگل و سازمان استاندارد پی‌اچ‌پی (PHP-FIG) دستورالعمل‌های خاصی (مانند PSR-12) برای نوشتن کدهای استاندارد ارائه داده‌اند که رعایت آن‌ها به افزایش کیفیت پروژه و هماهنگی تیمی کمک شایانی می‌کند. در این مقاله یاد می‌گیریم چطور توابع سفارشی خود را بر اساس این استانداردها بازطراحی کنیم.

۱. فعال‌سازی حالت سخت‌گیرانه (Strict Types)

گوگل در راهنماهای کدنویسی خود بر امنیت نوع داده‌ها تأکید زیادی دارد. به طور پیش‌فرض، PHP تلاش می‌کند انواع داده‌ها را به یکدیگر تبدیل کند (ضعف Type Safety). برای جلوگیری از این رفتار غیرمنتظره، همیشه باید در اولین خط فایل PHP خود از دستور زیر استفاده کنید:



declare(strict_types=1);

با این کار، اگر تابعی ورودی از نوع عدد اعشاری (float) بخواهد و شما رشته (string) ارسال کنید، برنامه با خطا مواجه می‌شود و از بروز باگ‌های پنهان جلوگیری می‌کند.

۲. ساختار کلی یک تابع استاندارد طبق PSR-12

بر اساس استاندارد PSR-12، نام توابع باید به صورت camelCase (شروع با حروف کوچک و کلمات بعدی با حروف بزرگ) نوشته شوند. همچنین باز و بسته شدن آکولادها باید طبق قواعد خاصی هماهنگ شود:


function calculateDiscount(float $totalAmount, float $discountPercent): float
{
    return $totalAmount * ($discountPercent / 100);
}

ویژگی‌های این کد استاندارد:

  • نام‌گذاری خوانا: از نام مخفف مثل calcDisc استفاده نشده است.
  • Type Hinting ورودی‌ها: نوع ورودی‌ها (float) کاملاً مشخص است.
  • Return Type: نوع خروجی تابع بعد از دو نقطه با عبارت : float معین شده است.

۳. مستندسازی با ساختار استاندارد PHPDoc

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


/**
 * Calculates the final price after tax calculation.
 *
 * @param float $price The base price.
 * @param float $taxRate The tax rate percentage (e.g. 0.09 for 9%).
 * @return float The final price with tax added.
 * @throws InvalidArgumentException If price is negative.
 */
function getFinalPrice(float $price, float $taxRate): float
{
    if ($price < 0) {
        throw new InvalidArgumentException('Price cannot be negative.');
    }
    return $price + ($price * $taxRate);
}

۴. اصل تک‌مسئولیتی (Single Responsibility Principle)

یک قانون طلایی در استانداردهای گوگل می‌گوید: «یک تابع باید فقط و فقط یک کار را انجام دهد و آن را به بهترین شکل ممکن انجام دهد.»

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

نتیجه‌گیری

رعایت استانداردهای کدنویسی در PHP شاید در ابتدا زمان‌بر به نظر برسد، اما در پروژه‌های بزرگ باعث صرفه‌جویی در صدها ساعت زمان عیب‌یابی و توسعه می‌شود. با فعال‌سازی strict_types، استفاده از تایپ هینتینگ و مستندسازی با PHPDoc، کدهای شما در سطح استانداردهای شرکت‌های بزرگی مثل گوگل قرار خواهد گرفت.


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش کامل کنترل جریان و استفاده از if و else در جاوا اسکریپت: راهنمای جامع برای مبتدیان
2م بهمن 1402

آموزش کامل کنترل جریان و استفاده از if و else در جاوا اسکریپت: راهنمای جامع برای مبتدیان

مطالعه بیشتر
جمع‌بندی، مرور مطالب و پروژه نهایی: ایجاد یک اپلیکیشن وب کامل با جاوا اسکریپت - راهنمای گام به گام
5م آبان 1403

جمع‌بندی، مرور مطالب و پروژه نهایی: ایجاد یک اپلیکیشن وب کامل با جاوا اسکریپت - راهنمای گام به گام

مطالعه بیشتر
راهنمای کامل لیست‌ها در HTML: آموزش انواع و اصول سئو
20م مرداد 1402

راهنمای کامل لیست‌ها در HTML: آموزش انواع و اصول سئو

مطالعه بیشتر
معرفی DOM و اصول آن در جاوا اسکریپت: راهنمای جامع برای مبتدیان
1م آبان 1403

معرفی DOM و اصول آن در جاوا اسکریپت: راهنمای جامع برای مبتدیان

مطالعه بیشتر
توابع فلش (Arrow Functions) در جاوا اسکریپت: ساده‌سازی کد با استفاده از ES6
2م شهریور 1403

توابع فلش (Arrow Functions) در جاوا اسکریپت: ساده‌سازی کد با استفاده از ES6

مطالعه بیشتر
الگوهای رایج برنامه‌نویسی ناهمگام در جاوا اسکریپت: Promise.race، Promise.all، و Promise.any کامل و مثال‌ها
1م آبان 1403

الگوهای رایج برنامه‌نویسی ناهمگام در جاوا اسکریپت: Promise.race، Promise.all، و Promise.any کامل و مثال‌ها

مطالعه بیشتر
استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل
16م آبان 1403

استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل

مطالعه بیشتر
JSX و رندرینگ مؤثر در React.js: بهینه‌سازی کامپوننت‌ها و بهبود عملکرد
28م شهریور 1402

JSX و رندرینگ مؤثر در React.js: بهینه‌سازی کامپوننت‌ها و بهبود عملکرد

مطالعه بیشتر
تفاوت آرایه عددی، انجمنی و چندبعدی در PHP: راهنمای جامع و کاربردی
24م خرداد 1405

تفاوت آرایه عددی، انجمنی و چندبعدی در PHP: راهنمای جامع و کاربردی

مطالعه بیشتر
مفاهیم پیشرفته در کلاس‌ها و وراثت (Super, Extends) در جاوا اسکریپت: راهنمای کامل و مثال‌ها
29م مهر 1403

مفاهیم پیشرفته در کلاس‌ها و وراثت (Super, Extends) در جاوا اسکریپت: راهنمای کامل و مثال‌ها

مطالعه بیشتر
آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای
18م مرداد 1402

آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای

مطالعه بیشتر
آشنایی با Emit در Vue.js | انتقال رویدادها از کامپوننت فرزند به والد
24م آذر 1404

آشنایی با Emit در Vue.js | انتقال رویدادها از کامپوننت فرزند به والد

مطالعه بیشتر

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