RAJESTARY DIGITAL TECH • SECURITY • EDUCATION
دانش • فناوری • امنیت

دنیای تکنولوژی
از یادگیری شروع می‌شود

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

LEARN BUILD SECURE CREATE

برنامه‌نویسی تابعی در PHP؛ کدنویسی تمیز و بیانگر

برنامه‌نویسی تابعی در PHP؛ کدنویسی تمیز و بیانگر

⚡ درس سوم: برنامه‌نویسی تابعی در PHP؛ کدنویسی تمیز و بیانگر

👋

سلام مهمان عزیز!

برای دسترسی به تمام محتوا و امکانات، وارد شوید.

🎯 هدف این درس: آشنایی با مفاهیم برنامه‌نویسی تابعی (Functional Programming) در PHP، استفاده از توابع ناشناس (Closures)، Arrow Functions و توابع مرتبه بالا مثل Map، Filter و Reduce برای پردازش داده‌ها به شکلی مدرن و خوانا.

مهمان عزیز! 👋
تا اینجا بیشتر با شی‌گرایی (OOP) کار کرده‌ایم. اما PHP یک زبان هیبریدی است و قابلیت‌های قدرتمندی در حوزه برنامه‌نویسی تابعی دارد.

برنامه‌نویسی تابعی بر پایه توابع خالص (Pure Functions) و عدم تغییر داده‌ها (Immutability) استوار است. این سبک کدنویسی باعث می‌شود کدهای شما کوتاه‌تر، قابل پیش‌بینی‌تر و راحت‌تر برای دیباگ باشند.

💡 چرا برنامه‌نویسی تابعی؟

۱. حذف حلقه‌های پیچیده foreach و جایگزینی با توابع بیانگر.
۲. کاهش باگ‌های ناشی از تغییر وضعیت متغیرها (Side Effects).
۳. کدهای کوتاه‌تر و خواناتر برای پردازش آرایه‌ها.


1️⃣ توابع ناشناس و Arrow Functions

در PHP مدرن، می‌توانیم توابع را بدون نام تعریف کنیم و آن‌ها را به عنوان آرگومان به توابع دیگر بفرستیم. با معرفی Arrow Functions در PHP 7.4، این کار بسیار ساده‌تر شده است.




closures.php

PHP
8.x



// روش قدیمی با Closure
$greet = function ($name) {
    return "Hello, $name";
};

// روش مدرن با Arrow Function (PHP 7.4+)
$greet = $name => "Hello, $name";

echo $greet('Younes'); // خروجی: Hello, Younes

2️⃣ تابع Map (نگاشت)

وقتی می‌خواهیم یک تغییر روی تمام اعضای یک آرایه اعمال کنیم (مثلاً دو برابر کردن قیمت‌ها)، به جای حلقه foreach از array_map استفاده می‌کنیم.



🔄
map_example.php

PHP
8.x



$prices = [100, 200, 300];

// افزایش ۱۰ درصدی قیمت‌ها
$newPrices = array_map(
    $fn => $fn * 1.1, 
    $prices
);

// خروجی: [110, 220, 330]

3️⃣ تابع Filter (فیلتر)

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



🔍
filter_example.php

PHP
8.x



$ages = [12, 25, 40, 17, 30];

// فقط افراد بالای ۱۸ سال
$adults = array_filter(
    $ages, 
    $fn => $fn >= 18
);

// خروجی: [25, 40, 30]

4️⃣ تابع Reduce (کاهش)

این تابع تمام عناصر آرایه را به یک مقدار واحد تبدیل می‌کند (مثل جمع کل فاکتور).



📉
reduce_example.php

PHP
8.x



$numbers = [1, 2, 3, 4, 5];

// محاسبه مجموع اعداد
$sum = array_reduce(
    $numbers, 
    $fn => $fn[0] + $fn[1], 
    0
);

// خروجی: 15

❌ خطاهای رایج در برنامه‌نویسی تابعی

🚫 اشتباه رایج:

استفاده بیش از حد از توابع تو در تو (Nested Functions) که باعث کاهش خوانایی کد می‌شود. گاهی اوقات یک حلقه ساده foreach خواناتر از چندین array_map تو در تو است.

  • نادیده گرفتن Immutability: سعی کنید آرایه اصلی را تغییر ندهید و نتیجه را در متغیر جدید ذخیره کنید.
  • پیچیدگی بی‌دلیل: هدف نهایی کد تمیز است، نه لزوماً کد تابعی. تعادل را حفظ کنید.

🏁 جمع‌بندی درس سوم

مهمان عزیز، در این درس یاد گرفتی:

  • ✅ نحوه تعریف توابع ناشناس و Arrow Functions.
  • ✅ استفاده از array_map برای تغییر داده‌ها.
  • ✅ استفاده از array_filter برای غربالگری داده‌ها.
  • ✅ استفاده از array_reduce برای تجمیع داده‌ها.

🎓 تمرین عملی درس سوم

یک آرایه از محصولات (شامل نام و قیمت) داری. با استفاده از ترکیب filter و map، فقط محصولاتی که قیمتشان بالای ۵۰۰ هزار تومان است را پیدا کن و نام آن‌ها را در یک آرایه جدید ذخیره کن.


🗺️ نقشه راه دوره: شما اینجا هستید!

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

درس عنوان درس آنچه یاد می‌گیرید
۱ اصول SOLID در PHP تک‌مسئولیتی، باز/بسته، جایگزینی لیسکوف، جداسازی رابط، وارونگی وابستگی
۲ الگوهای طراحی (Design Patterns) Singleton, Factory, Strategy, Observer, MVC پیشرفته
۳ برنامه‌نویسی تابعی در PHP توابع ناشناس (Closures)، Arrow Functions، Map/Filter/Reduce
۴ مدیریت وابستگی با Composer نصب پکیج‌ها، مدیریت نسخه‌ها، Autoloading (PSR-4)
۵ تست‌نویسی حرفه‌ای (TDD) آشنایی با PHPUnit، نوشتن Unit Test، Mocking
۶ کار با Redis و Caching کش کردن داده‌ها، Session Handler با Redis
۷ پردازش‌های پس‌زمینه (Queue & Jobs) استفاده از صف‌ها برای ایمیل‌زنی یا پردازش سنگین
۸ API نویسی حرفه‌ای (RESTful) استانداردهای REST، احراز هویت با JWT، Rate Limiting
۹ امنیت سایبری پیشرفته تحلیل حملات پیچیده، Secure Headers، CSP
۱۰ پروژه نهایی پیشرفته ساخت یک CMS ماژولار با قابلیت نصب پلاگین و تم

🔗 لینک‌های مرتبط

نویسنده تیم رجستری
تاریخ انتشار

نظر خود را بنویسید

با ثبت نظر، به بهبود محتوای ما کمک کنید

امتیاز شما به این مطلب (اختیاری)
برای امتیازدهی، روی ستاره‌ها کلیک کنید
نام شما در سایت نمایش داده می‌شود
ایمیل شما محفوظ می‌ماند
0کاراکتر|حداقل ۱۰ کاراکتر
نظر سازنده و مفید بنویسید
ارسال دیدگاه: +۵ امتیاز
امتیازدهی: +۲ امتیاز
نشان شما: مبتدی
لطفاً از کلمات محترمانه استفاده کنید. دیدگاه‌های توهین‌آمیز حذف می‌شوند.
⚠️

هشدار مهم!

برای اتصال به درگاه پرداخت و انجام تراکنش، لطفاً VPN یا فیلترشکن خود را خاموش کنید.

⏳ ادامه در
5
ثانیه