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 ماژولار با قابلیت نصب پلاگین و تم

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

👤
نویسنده یونس رجستری
📅
تاریخ انتشار 28 مرداد 1405
🔄
آخرین بروزرسانی 28 مرداد 1405
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

⚠️

هشدار مهم!

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

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