TGViewer
| کانال توسعه‌دهندگان PHP | | کانال توسعه‌دهندگان PHP | @developixphp · 1.68K subscribers
Post #85 1.75K
عملگر پایپ (Pipe Operator) در PHP

عملگر پایپ ( |> ) از PHP 8.5 با هدف ساده‌سازی جریان داده و افزایش خوانایی کد اضافه شده است. این عملگر امکان می‌دهد خروجی یک عبارت به‌عنوان ورودی تابع بعدی استفاده شود؛ بدون آنکه نیاز به تو در تو کردن فراخوانی‌ها یا استفاده از متغیرهای موقتی باشد.

ساختار کلی عملگر پایپ:
$value |> callable;


در این ساختار:

- مقدار سمت چپ (value) محاسبه شده و سپس به تابع سمت راست (callable) ارسال می‌شود، و نتیجهٔ آن تابع، خروجی نهایی عبارت خواهد بود.

- تابع سمت راست باید فقط یک پارامتر لازم داشته باشد؛ زیرا همان یک پارامتر از پایپ دریافت می‌شود.

- نماد ( ... ) پس از نام تابع، بیانگر این است که پارامتر آن تابع از طریق عملگر پایپ وارد می‌شود.

چند مثال:

پیش از اضافه شدن پایپ تواع پشت سر هم نوشته می‌شد:
$result = strtolower(trim($title));

یا از متغیرهای موقتی استفاده می‌شد:
$trim = trim($title);
$result = strtolower($trim);

اما با استفاده از پایپ می توان ساختار تمیزتر و قابل فهم‌تری را داشته باشیم:
$result = $title
|> trim(...)
|> strtolower(...);

ترتیب اجرای عملیات کاملا روشن و خوانا است:
ابتدا trim، سپس strtolower.

ترکیب توابع استاندارد با Closure
$slug = $title
|> trim(...)
|> (fn($s) => str_replace(' ', '-', $s))
|> strtolower(...);

از آنجایی که گفته شد توابع تنها یک متد داشته باشند، برای توابع با چند متد می‌توان از کلوژرها استفاده کرد.
در این مثال str_replace نیاز به پارامترهای بیشتری است به همین دلیل از arrow-function استفاده شده.

عملیات روی آرایه
$clean = $items
|> (fn(array $arr) => array_map(fn($x) => trim($x), $arr))
|> (fn(array $arr) => array_filter($arr, fn($x) => $x !== ''))
|> array_values(...);

چنین زنجیره‌ای بدون استفاده از پایپ، به‌طور معمول شامل متغیرهای واسطه یا تو در تویی توابع خواهد بود؛ اما با استفاده از پایپ، تمامی مراحل به صورت خوانا پشت سر هم نوشته شده‌اند.

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

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

- نیازی به ایجاد متغیر برای ذخیرهٔ نتیجهٔ هر مرحله نیست.

محدودیت‌ها و نکات مهم:
- توابعی که بیش از یک پارامتر ضروری دارند، مستقیماً با پایپ قابل استفاده نیستند.
"hello world" |> explode(' ', ...); // ERROR

"hello world" |> (fn($v) => explode(' ', $v)); // correct

- توابعی که پارامترشان با ارجاع (By Reference) دریافت می‌شود قابل استفاده نیستند (مانند array_pop یا sort)

- اگر تابعی مقدار بازگشتی نداشته باشد (void)، نتیجهٔ عملیات null خواهد بود و استفادهٔ آن در میانهٔ زنجیره صحیح نیست.


به طور کلی عملگر پایپ در PHP 8.5 امکان نگارش کدی خواناتر، مرحله‌ای و ساخت‌یافته را فراهم می‌کند.
این عملگر با ارسال خروجی هر مرحله به مرحلهٔ بعد، جریان داده را ساده‌سازی می‌کند و برای پردازش رشته‌ها، آرایه‌ها و داده‌های میان‌مرحله‌ای بسیار مناسب است.
در مقابل، محدودیت‌هایی نظیر نیاز به تک‌پارامتری بودن تابع یا عدم پشتیبانی از توابع دارای ارجاع وجود دارد که باید در استفادهٔ روزمره مورد توجه قرار گیرد.

🔖 #PHP #پی_اچ_پی

👤 AmirHossein

💎 Channel: @DevelopixPHP
  • 👍 5
  • ❤ 2
  • 🔥 1
More from @developixphp
  1. Sep 26, 2026این کد موقع اجرا چه خروجی‌ای می‌ده و مشکلش کجاست؟ 🔖 #PHP #پی_اچ_پی 👤 Developix 💎 Channe…
  2. Sep 25, 2026🔥 پکیج: قراردادهای ترجمه سیمفونی اگر کد PHP را برای چندزبانگی می‌نویسید، بهتر است منطق بر…
  3. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
  4. Sep 11, 2026ارسال ایمیل تأیید ثبت‌نام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه‌ PHP…
  5. Sep 10, 2026برنامه نویسی سوکت در PHP بخش اول عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از س…
  6. Aug 31, 2026🔥 پکیج: استاندارد PSR-11 برای Container استاندارد PSR-11 فقط یه interface مشترک برای Cont…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →