Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

دوال الـ Callback

جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 4 من 68.

دالة الـ callback هي دالة يتم تمريرها كمعامل (argument) إلى دالة أخرى. بدلاً من استدعاء الدالة فوراً، تقوم بتمرير اسمها بحيث يمكن للدالة المستلمة استدعاؤها لاحقاً عند الحاجة.

لتمرير دالة كدالة استدعاء (callback)، يمكنك ببساطة استخدام اسم الدالة كسلسلة نصية:

<?php
function greet($name) {
    echo "Hello, " . $name . "!";
}

function processUser($username, $callback) {
    // القيام ببعض المعالجة...
    $callback($username);  // استدعاء دالة الاستدعاء
}

processUser("Alice", "greet");  // المخرجات: Hello, Alice!
?>

في هذا المثال، يتم تمرير "greet" كدالة استدعاء (callback) إلى processUser(). تقوم دالة processUser() بعد ذلك باستدعاء الـ callback باستخدام السلسلة النصية كاسم للدالة.

تعد عمليات الاستدعاء (Callbacks) مفيدة للغاية لأنها تجعل وظائفك أكثر مرونة. يمكن لنفس الوظيفة تنفيذ إجراءات مختلفة اعتمادًا على الاستدعاء الذي تمرره إليها. هذا المفهوم أساسي للعديد من وظائف PHP المدمجة مثل array_map() و array_filter()، والتي ستواجهها لاحقًا في هذه الدورة.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

challenge icon

التحدي

سهل

قم بإنشاء دالتين: واحدة تسمى formatUppercase تأخذ سلسلة نصية وتعيدها بأحرف كبيرة، والأخرى تسمى formatLowercase تأخذ سلسلة نصية وتعيدها بأحرف صغيرة.

ثم قم بإنشاء دالة تسمى applyFormat تقبل معاملين: سلسلة نصية واسم دالة استدعاء (callback function). يجب أن تقوم هذه الدالة بتطبيق الاستدعاء على النص وإرجاع النتيجة.

ستتلقى مدخلين: نوع العملية ("upper" أو "lower") والنص المراد تنسيقه. اقرأ كلا المدخلين، وحدد دالة الاستدعاء التي ستستخدمها بناءً على نوع العملية، ثم استدعِ applyFormat مع دالة الاستدعاء المناسبة، واطبع النتيجة المنسقة.

تنسيق المدخلات: سطران - السطر الأول يحتوي على نوع العملية ("upper" أو "lower")، والسطر الثاني يحتوي على النص المراد تنسيقه

المخرجات المتوقعة: النص المنسق بناءً على نوع العملية

ورقة مرجعية

دالة رد النداء (callback function) هي دالة يتم تمريرها كوسيط (argument) إلى دالة أخرى. بدلاً من استدعاء الدالة فوراً، تقوم بتمرير اسمها بحيث يمكن للدالة المستلمة استدعاؤها لاحقاً عند الحاجة.

لتمرير دالة كدالة رد نداء، استخدم اسم الدالة كسلسلة نصية (string):

<?php
function greet($name) {
    echo "Hello, " . $name . "!";
}

function processUser($username, $callback) {
    // القيام ببعض المعالجة...
    $callback($username);  // استدعاء دالة رد النداء
}

processUser("Alice", "greet");  // المخرجات: Hello, Alice!
?>

تجعل دوال رد النداء (Callbacks) الدوال أكثر مرونة من خلال السماح بإجراءات مختلفة اعتماداً على دالة رد النداء التي تمررها إليها.

جرّب بنفسك

<?php
// قراءة المدخلات
$operation = trim(fgets(STDIN));
$text = trim(fgets(STDIN));

// TODO: اكتب كودك أدناه
// إنشاء دالة formatUppercase
// إنشاء دالة formatLowercase
// إنشاء دالة applyFormat
// تحديد أي استدعاء (callback) سيتم استخدامه بناءً على نوع العملية
// استدعاء applyFormat مع الاستدعاء المناسب

// طباعة النتيجة
echo $result;
?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow