الموقع حالياً تحت التطوير (Beta) 🚀. قد تلاحظ بعض التغييرات أو مميزات قيد العمل.
لارافيل درس تعليمي

بايبر (Piper): إطلاق قوة مصفوفات وسلاسل لارافيل في PHP الخالصة باستخدام عامل الأنبوب

Admin User
Admin User
May 23, 2026
6 دقيقة قراءة

Key Takeaways

  • تُعد أساليب التعامل مع المصفوفات والسلاسل النصية بمرونة في لارافيل متعة حقيقية، حيث توفر طرقًا موجزة ومقروءة لتحويل البيانات. ماذا لو كان بإمكانك جلب نفس هذه ال...

تُعد أساليب التعامل مع المصفوفات والسلاسل النصية بمرونة في لارافيل متعة حقيقية، حيث توفر طرقًا موجزة ومقروءة لتحويل البيانات. ماذا لو كان بإمكانك جلب نفس هذه القوة التعبيرية إلى أي مشروع PHP، دون الحاجة إلى تضمين إطار عمل لارافيل بالكامل؟ هنا يأتي دور بايبر (Piper)، وهي حزمة رائعة من Spatie تسد هذه الفجوة عن طريق نقل مساعدات (helpers) لارافيل المحبوبة إلى دوال مستقلة مصممة للعمل بسلاسة مع عامل الأنبوب (|>) القادم في PHP 8.5.

ما هو بايبر (Piper)؟ #

بايبر هو في الأساس مجموعة أدوات تستخلص أفضل ما في قدرات معالجة المصفوفات والسلاسل النصية في لارافيل وتحولها إلى مجموعة من دوال PHP الخالصة. تدور فكرته الأساسية حول توفير أساليب قوية ومألوفة مثل map و filter و pluck للمصفوفات، و slug و upper و studly للسلاسل النصية، ولكن مع إعادة تغليفها لاستخدام أوسع عبر أي تطبيق PHP.

يكمن الابتكار الرئيسي في تصميمه لعامل الأنبوب PHP 8.5 Pipe Operator. يعزز هذا العامل بشكل كبير قابلية القراءة والصيانة عند ربط العمليات المتتالية، حيث يحول استدعاءات الدوال المتداخلة أو تعيين المتغيرات الوسيطة إلى تدفق خطي ومتسلسل.

لماذا نستخدم بايبر (Piper)؟ #

يقدم بايبر العديد من المزايا المقنعة:

  • سلاسة على غرار لارافيل: استمتع بنفس بناء الجملة الواضح والمعبر لتحويلات البيانات الذي يحبه مطورو لارافيل، ولكن في أي مشروع PHP.
  • تحسين قابلية القراءة: يسمح عامل الأنبوب، جنبًا إلى جنب مع دوال بايبر، بكتابة مسارات بيانات معقدة بطريقة طبيعية من اليسار إلى اليمين، مما يجعل الكود الخاص بك أسهل في الفهم بنظرة سريعة.
  • نموذج البرمجة الوظيفية: يشجع على أسلوب برمجة وظيفي (functional programming) أكثر، حيث يُنظر إلى تحويلات البيانات على أنها سلسلة من العمليات غير القابلة للتغيير (immutable).
  • تجنب الحمل الزائد للإطار (Framework Overhead): احصل على إمكانية الوصول إلى مساعدات قوية دون الحاجة إلى تثبيت إطار عمل لارافيل بالكامل، وهو مثالي للسكريبتات الصغيرة أو الخدمات المصغرة أو المشاريع غير اللارافيلية.
  • كود أنظف: وداعًا لاستدعاءات الدوال المتداخلة بعمق أو المتغيرات المؤقتة المتعددة عند إجراء تحويلات متعددة.

المتطلبات الأساسية #

للمتابعة واستخدام بايبر، ستحتاج إلى:

  • PHP 8.5 أو أعلى: تم تصميم بايبر خصيصًا ليعمل مع عامل الأنبوب، والذي من المقرر أن يكون جزءًا من PHP 8.5.
  • Composer: لإدارة الحزم.

ملاحظة: اعتبارًا من وقت كتابة هذا المقال، لا يزال PHP 8.5 وعامل الأنبوب في مرحلة التطوير/RFC. يفترض هذا البرنامج التعليمي تضمينه النهائي وبناء جملته المستقر.

التثبيت #

تثبيت بايبر بسيط باستخدام Composer:

composer require spatie/piper

كيفية استخدام بايبر (Piper): دليل عملي #

فهم عامل الأنبوب (|>) #

قبل الخوض في دوال بايبر، دعنا نفهم مفهوم عامل الأنبوب. يأخذ هذا العامل نتيجة التعبير على يساره ويمررها كـ أول حجة للدالة أو التعبير على يمينه. ويستخدم $$ كعنصر نائب للقيمة التي تم تمريرها (piped value) داخل التعبير على اليمين.

بدون عامل الأنبوب (الربط المتسلسل/التداخل التقليدي):

<?php

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

// استدعاءات دوال متداخلة $processedData = array_filter(array_map(fn($n) => $n * 2, $data), fn($n) => $n > 5);

// أو بمتغيرات وسيطة $doubledData = array_map(fn($n) => $n * 2, $data); $processedData = array_filter($doubledData, fn($n) => $n > 5);

print_r($processedData); // الناتج: Array ( [2] => 6 [3] => 8 [4] => 10 )

مع عامل الأنبوب:

<?php

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

$processedData = $data |> array_map(fn($n) => $n * 2, $$) |> array_filter($$, fn($n) => $n > 5);

print_r($processedData); // الناتج: Array ( [2] => 6 [3] => 8 [4] => 10 )

لاحظ كيف يجعل عامل الأنبوب التدفق أكثر خطية وقابلية للقراءة.

استخدام مساعدات مصفوفات بايبر #

يوفر بايبر دوال مستقلة لتحويلات المصفوفات الشائعة. دعنا نفترض أنك قمت باستيراد الدوال الضرورية من الفضاء الاسمي Spatie\Piper (على سبيل المثال: use function Spatie\Piper\{map, filter, unique, pluck};).

<?php

use function Spatie\Piper\{map, filter, unique, pluck};

$users = [
    ['id' => 1, 'name' => 'Alice', 'email' => '[email protected]'],
    ['id' => 2, 'name' => 'Bob', 'email' => '[email protected]'],
    ['id' => 3, 'name' => 'Alice', 'email' => '[email protected]'], // اسم/بريد إلكتروني مكرر
    ['id' => 4, 'name' => 'Charlie', 'email' => '[email protected]'],
];

// المثال 1: الحصول على أسماء فريدة، ثم تحويلها إلى أحرف كبيرة
$processedNames = $users
    |> pluck($$, 'name')
    |> unique($$)
    |> map($$, fn($name) => strtoupper($name));

print_r($processedNames);
// الناتج: Array ( [0] => ALICE [1] => BOB [3] => CHARLIE )

// المثال 2: تصفية المستخدمين حسب ID > 2، ثم تحويلهم إلى بريدهم الإلكتروني فقط
$filteredEmails = $users
    |> filter($$, fn($user) => $user['id'] > 2)
    |> pluck($$, 'email');

print_r($filteredEmails);
// الناتج: Array ( [0] => [email protected] [1] => [email protected] )

استخدام مساعدات سلاسل بايبر #

يقدم بايبر أيضًا دوال معالجة السلاسل النصية القوية في لارافيل. دعنا نفترض استيراد slug و upper و studly.

<?php

use function Spatie\Piper\{slug, upper, studly};

$title = "This is a Great Blog Post Title!";

// المثال 1: إنشاء slug مناسب لعنوان URL
$postSlug = $title
    |> slug($$);

echo "Slug: " . $postSlug . "\n"; // الناتج: Slug: this-is-a-great-blog-post-title

// المثال 2: التحويل إلى StudlyCase
$studlyCase = "laravel_world_article"
    |> studly($$);

echo "StudlyCase: " . $studlyCase . "\n"; // الناتج: StudlyCase: LaravelWorldArticle

// المثال 3: ربط عدة عمليات على السلاسل (تحويل إلى أحرف كبيرة، ثم استبدال المسافات بشرطات سفلية)
$transformedString = "hello world from piper"
    |> upper($$)
    |> str_replace(' ', '_', $$); // يمكن المزج مع دوال PHP الأصلية

echo "Transformed: " . $transformedString . "\n"; // الناتج: Transformed: HELLO_WORLD_FROM_PIPER

بايبر (Piper) مقابل مجموعات لارافيل (Laravel Collections) #

قد تتساءل متى تستخدم بايبر مقابل مجموعات لارافيل المضمنة. يعتمد الاختيار إلى حد كبير على سياق مشروعك:

  • تطبيقات لارافيل: إذا كنت تعمل بالفعل ضمن تطبيق لارافيل كامل، فالتزم بمجموعات Illuminate\Support\Collection ومساعدات السلاسل النصية الأصلية في لارافيل. فهي مدمجة بإحكام وتوفر مجموعة ميزات أكثر شمولاً داخل بيئة الإطار.
  • مشاريع PHP الخالصة أو غير اللارافيلية: هذا هو المكان الذي يتألق فيه بايبر. بالنسبة للسكريبتات، الخدمات المصغرة، الحزم المستقلة، أو المشاريع التي لا تستخدم لارافيل، يوفر بايبر طريقة خفيفة الوزن للوصول إلى معالجة بيانات قوية وقابلة للقراءة بشكل مشابه دون تبعيات الإطار.

الخاتمة #

يُعد بايبر إضافة رائعة إلى بيئة PHP، حيث يجلب أناقة وكفاءة مساعدات المصفوفات والسلاسل النصية في لارافيل إلى جمهور أوسع، مدمجًا بشكل جميل مع عامل الأنبوب القادم في PHP 8.5. من خلال تمكين أسلوب برمجة أكثر وظيفية وقابلية للقراءة، يساعد بايبر المطورين على كتابة كود أنظف وأسهل في الصيانة، بغض النظر عن اختيار إطار عمل مشروعهم. جربه في مشروع PHP القادم الذي يحتاج إلى تحويلات بيانات معبرة!

FAQs

ما هو عامل الأنبوب (<pre><code>|></code></pre>) في PHP؟
عامل الأنبوب (<pre><code>|></code></pre>) في PHP هو ميزة مقترحة لـ PHP 8.5 تسمح لك بتمرير نتيجة تعبير على يساره كأول حجة للدالة أو التعبير على يمينه، باستخدام <pre><code>$$</code></pre> كعنصر نائب. يعمل على تحسين قابلية قراءة الكود للعمليات المتسلسلة.
هل أحتاج إلى لارافيل لاستخدام بايبر؟
لا، هذه هي الفكرة الرئيسية وراء بايبر! فهو يستخلص مساعدات المصفوفات والسلاسل النصية على غرار لارافيل في دوال مستقلة، مما يتيح لك استخدامها في أي مشروع PHP خالص دون الحاجة إلى إطار عمل لارافيل بالكامل.
ما هو إصدار PHP المطلوب لبايبر؟
تم تصميم بايبر لـ PHP 8.5 أو أعلى، وتحديداً للاستفادة من عامل الأنبوب الجديد (<pre><code>|></code></pre>). اعتبارًا من وقت كتابة هذا المقال، لا يزال PHP 8.5 قيد التطوير، ولكن بايبر مبني مع الأخذ في الاعتبار هذه الميزة المستقبلية.
كيف يقارن بايبر بمجموعات لارافيل الأصلية؟
لتطبيقات لارافيل الكاملة، التزم بمجموعة <pre><code>Illuminate\Support\Collection</code></pre> الخاصة بلارافيل. بايبر هو الأنسب لمشاريع PHP غير اللارافيلية أو السكريبتات المستقلة حيث ترغب في معالجة بيانات شبيهة بلارافيل دون الاعتماد على الإطار الكامل.

Want more content like this?

Explore more tutorials in the لارافيل section.

Explore لارافيل

You might also like