recent
أخبار ساخنة

الدوال function و كيفية التعامل معها في لغة PHP الدرس |12|

الصفحة الرئيسية


الدوال في لغة PHP

الدالة عبارة عن وظيفة ضِمنها نقوم بكتابة أي اوامر نرغَب بأن يتم تنفيذها و عندما يتم إستدعاء هذه الدالة سوف يتم تنفيذ الأوامر التي تتواجد ضمنها, هناك ثلاث أنواع من الدوال سوف نتعرَّف عليها جميعها بالتفصيل.


الشكل العام لإنشاء دالة

<?php
function name(){
    //الاوامر التي يتم تنفيذها هنا;
}
?>

حيث أن name هو إسم الدالة و بين القوسين {} نقوم بكتابة الأوامر التي نُريد تنفيذها أثناء إستدعاء هذه الدالة.


قواعد إنشاء دالة في لغة PHP

1- لا يسمَح بإستخدام فراغات في إسم الدالة.
2- لا يسمَح لك بإستخدام الأشكال الخاصة ما عدا _.
3- لا يسمَح بإستخدام أحرف غير الأحرف الإنجليزية.
4- غير مسموح أن يبدأ إسم الدالة برقم.

 

الدالة من نوع void

هذا النوع من الدوال لا يُعيد أي قيمة عند إستدعاءه فقط يقوم بتنفيذ الأوامر التي تتواجد ضمنه, قم بتحديد بنفسك إسم الـ function و الفنكشن هي وظيفة يعني لذلك من الأفضل جعل الإسم يتعلق بالأوامر التي ترغَب بكتابتها في تلك الوظيفة, مثلاً نرغب بإنشاء دالة عن الصحة نقوم بتسميته health, لذلك يُفضَّل تحديد إسم الدالة حسب الوظيفة بحيث يكون واضح بالنسبة للمبرمج و واضح لدى الآخرين لأجل ماذا قمت بتسمية هذه الدالة.

<?php
function health(){
    echo "<h1>My health is excellent</h1>";
}
?>

هنا عند تشغيل الكود في السيرفر لن يتم تنفيذ أي أمر لأننا فقط قُمنا بإنشاء الوظيفه و لم نقم بإستدعاءها, لإستدعاءها بالشكل الاتي

<?php
function health(){
    echo "<h1>My health is excellent</h1>";
}
health();
?>


قُمنا فقط بكتابة إسم هذه الدالة و إستدعيناها فقط بإسمها, كما يمكن تحديد بنفسك متى يمكن إستدعاء هذه الدالة, في الوقت الحالي تركنا إستدعاءها فقط عند فتح ملف php.


و نستطيع إستدعاءها عندما يقوم شخص ما عندما يضغط على زر من نوع submit, المهم يجب أن نعرف كيف نحدد بأنفسنا متى يجب علينا إستدعاء الدالة, كما يمكن إستدعاء الدالة اكثر من مرة مثلاً نُريد أن ننفذها مرتين نقوم بإسدعاءها مرتين كما يلي

<?php
function health(){
    echo "<h1>My health is excellent</h1>";
}
health();
health();
?>

هنا سوف تتنفذ الأوامر الموجودة مرتين عند تشغيل الكود في السيرفر كما يلي


بإختصار الـ function هي عبارة عن وظيفة يُمكن تحديد بنفسك إسم هذه الوظيفة و ضمنها نقوم بكتابة الأوامر التي نُريد تنفيذها عندما نقوم بإستدعاء تلك الوظيفه بإسمها.

مثال

<?php
$kaissar = 'programmer tech';
function Team($kaissar)
{
     echo "<h3> $kaissar </h3>";
}
Team(10);
Team(12.333);
Team('Date');
Team(true);

echo $kaissar;
?>


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


جميع القيم يُمكن أن يأخذها المعامل و في حالتنا نحن المعامل يأخذ قيمة عشرية و ايضاً نصوص و ايضاً عدد صحيح و ايضاً المعامل منطقي و في النهاية تم طبع متغير kaissar أو البيانات التي يحملها المتغير.


الدالة من نوع parameters

يكون مثل النوع الأول void فقط يمكن أن نُضيف شروط ضمن هذه الدالة, الشروط عبارة عن مُتغيرات سنقوم بإنشاءها و عندما نقوم بإستدعاء الفنكشن يجب علينا أن نقوم بتحديد بيانات للمتغيرات التي قُمنا بإنشائها ضمن الأقواس الدائرية في الفنكشن.

<?php
function print_data($name,$year){

}
print_data();
?>

عند إستدعاء الدالة بهذه الطريقة سوف يظهَر لدينا خط أحمر على إسم الدالة عند الإستدعاء و هذا الخطأ عندما نضغط عليه لمعرفة التفاصيل سوف يقول أن هناك باراميتر يُسمى name و باراميتر يسمى year لم نقُم بتحديد بيانات لهم من أجل إستدعائهم, و لتحديد بيانات لهم نقوم بتمرير البيانات ضمن الأقواس الدائرية عندما نقوم بإستدعائها كما يلي

<?php
function print_data($name,$year){
    echo "<h1>Name: " . $name . " , Year: " . $year . "</h1>";
}
print_data("Ahmed kaissar", 2001);
?>

 

قُمنا بإنشاء دالة طباعة من أجل تنسيق عملية تمرير الباراميترات و وضعناها بداخل وسم h1 ليكون الحجم كبير و واضح, و في الأسفل قُمنا بإستدعاء الدالة و تمرير البيانات لها و هي إسم Ahmed kaissar و السنة 2001 و عند تشغيل هذا الكود في السيرفر ستكون نتيجته هي


الفكرة من هذا النوع من الدوال هي تمرير بيانات عندما نقوم بإستدعاء الدالة, و يُمكن في كل مرة نقوم بها بإستدعاء الفنكشن أن نُمرر بيانات مختلفة كما يلي سنقوم بتمرير بيانات مختلفة

<?php
function print_data($name,$year){
    echo "<h1>Name: " . $name . " , Year: " . $year . "</h1>";
}
print_data("Ahmed kaissar", 2001);
print_data("Muhammad Alush", 1994);
print_data("Saja Alsadig", 1995);
?>

قمنا بإنشاء دالة طباعة من أجل تنسيق عملية تمرير الباراميترات و وضعناها بداخل وسم h1 ليكون الحجم كبير و واضح, و في الأسفل قُمنا بإستدعاء الدالة ثلاث مرات و تمرير بيانات مختلفة في كل مرة نستدعيها, و عندما شغلنا الكود في السيرفر سنحصل على النتائج الآتية

 

هذا يعني أنه يُمكنك تحديد بنفسك أي أوامر ترغَب بأن يتم تنفيذها في كل مرة تقوم بها بإستدعاء الفنكشن و أي بيانات يتم تمريرها و أن تطبع أي عنصر من عناصر html و تقوم بتصميمها في css كما تشاء فيما بعد.


الدالة من نوع return

معنى كلمة return بالعربية هي إعادة أو إسترجاع فهذا يعني أن هذا النوع يقوم بعرض أو إرجاع البيانات التي يتم تحديدها عندما يتم إستدعاء الفنكشن و لآحقاً يُمكن تحديد بنفسك ماذا ترغب بالقيام بهذه القيمة المرجعة من هذا النوع من الدوال.

بنفس الطرق السابقة نقوم بكتابة كلمة function في البداية و ثم نقوم بتحديد إسم الفنكشن بما أن الفنكشن تعني وظيفة نقوم بتحديد إسم هذه الوظيفه.

 

الشكل العام لدالة return

<?php
function getText(){
    return
}
?>

حيث أن getText هو إسم الدالة يُمكن تسميتها كما تشاء, يُمكنك بنفسك تحديد نوع البيانات التي تُريد أن تقوم بإسترجاعها على سبيل المثال string أو int و غيره...الخ, المُهم يجب عليكم الفهم لأجل ماذا نقوم بإستخدام الأمر return و إنشاء فنكشن من نوع return.

<?php
function getText(){
    $text = "<h1>Ahmed kaissar</h1>";
    return $text;
}
getText();
?>

 

البيانات التي ترجع لنا من نوع return يُمكن تخزينها في مُتغير جديد, لنفترض ما يلي 

<?php
function setText(){
    $text = "<h1>Ahmed kaissar</h1>";
    return $text;
}
$getText = setText();
echo $getText;
?>

قُمنا بإنشاء متغير جديد هو getText و قلنا للبرنامج أن هذا المتغير خزن به قيمة المتغير setText ثم قُمنا بطباعة المتغير الجديد getText ثم شغلنا الكود في المتصفح و كانت النتيجة هي


كما لاحظنا أنه تم تخزين قيمة المتغير الأول للمتغير الجديد و طبع لنا القيمة على الشاشة.

يمكنك أن تقوم بتخزين البيانات التي في الدالة من نوع return ضمن متغير آخر, و ايضاً يُمكننا إستخدامها ضمن جمله شرطية if statement كما بالمثال الآتي

<?php
function setText(){
    $text = "<h1>Ahmed kaissar</h1>";
    return $text;
}
$getText = setText();
echo $getText;
if(setText() === "<h1>Ahmed kaissar</h1>"){
    echo "تم تنفيذ الأوامر";
}
?>

وضعنا شرط إذا كان المتغير setText يمتلك الكلمة Ahmed kaissar و موجودة بداخل وسم h1 قم بطباعة كلمة تم تنفيذ الأوامر, و عندما شغلنا هذا الكود في السيرفر سنحصل على النتيجة

عند تشغيل هذا الكود في السيرفر سنحصل على النتيجة الآتية


نلاحظ أن الشرط محقق و طبع لنا تم تنفيذ الأوامر, في حال لم يتحقق الشرط هنا لن يطبع شيئ.

يُمكن لهذا النوع ايضاً أن يمتلك باراميتر و تمرير القيم عند الإستدعاء, لننشئ دالة أخرى من نوع return و هذه المرة يكون مع باراميتر يعني متغير ضمن الأقواس الدائرية في الدالة

<?php
function setText(){
    $text = "<h1>Ahmed kaissar</h1>";
    return $text;
}
function setResult($number1 , $number2){
    return $number1 + $number2;
}

$getText = setText();
$getResult = setResult(23, 50);
echo $getResult;
echo $getText;
}
?>

قمنا بإنشاء دالة إسمها getResult و كان بها باراميترين و هم number1 و number2 و مهمة هذه الدالة هي إرجاع ناتج جمع number1 مع number2 ثم قمنا بتمرير القيمة للباراميتر عند إستدعاءه و هي 23 و 50 ثم قمنا بطباعه getResult و حصلنا على النتيحة 73 عند تشغيلها في السيرفر


نلاحظ أنه جمع لنا ناتج الباراميترين و نستطيع تحويل العملية لضرب أو طرح أو قسمة ....الخ.

 

مثال

<?php
function Team($kaissar , $date)
{
    return $kaissar + $date;
}
echo Team(10 , 20);
?>
 

في المثال السابق قُمنا بإنشاء function بإسم Team لكن هذه الدالة تحتوي على إثنين من المعاملات و كما قمنا ايضاً بجمع المعامل الذي إسمه kaissar مع المعامل الآخر بإسم date و بإستخدام return أي أننا نريد إرجاع تلك العملية لكن لم يأخذ من المعاملات أي قيم و قُمنا بطباعة ما تحتويه الدالة team و قمنا بإسناد قيم إلى كل معامل من المعاملات, يأخذ المعامل الأول الذي هو kaissar بيانات من نوع عدد صحيح و هو رقم 10 و المعامل الثاني الذي هو date يأخذ من البيانات ايضاً عدد صحيح و هو 20 حتى يكون ناتج جمع المعاملات الأثنين يكون 30 و هذا الناتج أثناء تنفيذ الكود.

 

مثال

<?php
function Team($data)
{
    return  array($data * $data, log($data) );
}
print_r(Team(23));
?>

لآحظوا هنا ماذا يحتوي المعامل Array من نوع indexed array؟ المعامل هنا يحتوي من البيانات على عدد صحيح و هو 23 ثم قُمنا بضرب المعامل في نفسه داخل Array و إستخدمنا log لتعيد logarithm العشري لها, نتحدث في المثال السابق بكل وضوح 23 *23 و يكون الناتج 529 لكن يكون داخل مصفوفة شاهد المخرجات في الأعلى.


دروس مهمة ذات صلة

1 - إضغط هنا لقراءة درس الدوال في لغة جافاسكربت.

2 - إضغط هنا لقراءة درس الدوال في لغة السي C.

3 - إضغط هنا لقراءة درس الدوال في لغة سي بلس بلس C++.

4 - إضغط هنا لقراءة درس الدوال في لغة جافا Java.

5 - إضغط هنا لقراءة درس الدوال في لغة بايثون Python.

6 - إضغط هنا لقراءة درس الدوال في SQL.


google-playkhamsatmostaqltradent