تصميم موقع الويب الخاص بك مع PHP و MySQL


الدرس: الدوال / الوظائف


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

ما هي الدالة؟


الدالة هي عبارة عن سلسلة من العبارات التي تؤدي إجراءات وتعيد قيمة. بشكل عام ، حالما تحتاج إلى القيام ببعض العمل الذي ستحتاج إليه مرة أخرى لاحقًا ، فمن المستحسن التحقق مما إذا كانت هناك بالفعل دالة تقوم بهذا نيابة عنك. وإذا كانت الدالة غير موجودة ، فلديك خيار إنشائها.
تخيل أن الدوال هي روبوتات كما في الشكل التالي.
web dynamique php
دالة مثل الروبوت
أنت لا تعرف ما يحدث داخل هذا الروبوت ، ولكن يمكنك الضغط على زر لمطالبته بعمل شيء محدد. مع الدوال ، هو نفس المبدأ!
حوار مع دالة
إليك نوع الحوار الذي يمكن أن تجريه مع الدالة:
  • أنت ،ايتها الدالة calculCube، اعطني حجم مكعب له حافة 4 صم.
تقوم الدالة بإجراء العمليات الحسابية المطلوبة ثم تستجيب:
  • تبلغ مساحة هذا المكعب 64 صم3
نُعطي مُدخلا للدالة و الذي ستستعمله للقيام بالعملية الحسابية (هنا، طول الحافة: 4) وترجع الدالة كنتيجة: 64. انظر الشكل التالي.
web dynamique php
حساب المكعب
بفضل الدالة ، لم تكن بحاجة إلى تذكر كيفية حساب حجم المكعب. حسنًا ، لقد كان الأمر بسيطًا جدًا (كان يكفي لجعل 4 * 4 * 4) ، ولكن سيتعين عليك في كثير من الأحيان إجراء عمليات أكثر تعقيدًا وستسمح لك الدوال بعدم القلق بشأن تفاصيل الحسابات.
إذا كان عليك تحديد حجم المكعب مرة واحدة ، فيمكنك البحث عن الصيغة في كتاب (إذا كنت لا تتذكرها) وكتابة الحساب يدويًا. ولكن ماذا لو كان عليك أن تفعل ذلك 5 مرات؟ 10 مرات؟ 100 مرة؟
كيف يختلف عن الحلقات؟ مع الحلقات يمكننا تكرار نفس الكود عدة مرات أيضًا!
نعم ، لكن الميزات قادرة على التكيف بناءً على المعلومات التي ترسلها إليها. على سبيل المثال ، في حالتنا ، يكفي نقل طول حافة المكعب إلى دالتنا بحيث تعيد النتيجة إلينا. تسمى هذه المعلومات التي تُعطى كمدخلات للدالة parameters (كلمة يجب معرفتها!) .
هل تُستخدم الدوال فقط لإجراء حسابات رياضية؟ أريد فقط إنشاء موقع على شبكة الإنترنت ، وليس الرياضيات!
لقد اخترت مثالًا رياضيًا هنا لأنني أجده بسيطًا ومتحدثًا ، لكن في الممارسة العملية لا نقضي وقتًا في حساب اللوغاريتمات و غيرها عندما أوافق على إنشاء موقع على شبكة الإنترنت.
على وجه التحديد ، يمكن للدوال استرجاع المعلومات مثل التاريخ والوقت الحاليين ، وتشفير البيانات ، وإرسال رسائل البريد الإلكتروني ، ونص البحث ، والمزيد!
الدوال في PHP
لقد تخيلنا حتى الآن الحوار مع دالة يمثلها روبوت ، وهي ليست مهمة للغاية.
دعنا نعود إلى الأشياء الجادة والملموسة.
استدعاء دالة
في PHP ، كيف نستدعي دالة ؟ بالاسم ، باردي! مثلا :

<?php
calculCube();
?>
الدالة calculCube هي دالة وهمية: لا وجود لها (إلا إذا قمنا بإنشائها بأنفسنا). لذلك ، لا تحاول تشغيل كود PHP هذا في المنزل لأنه لن يعمل. اقرأ فقط لفهم العملية ، ثم ستتاح لك الفرصة لممارسة المزيد في هذا الفصل.
كما ترون ، كتبت للتو اسم الدالة ، متبوعًا بأقواس فارغة ، ثم شبه منقوطة. من خلال القيام بذلك ، أدعو الدالة calculCube ولكني لا أرسل له أي معلومات ، ولا مُدخلات .
يمكن لبعض الدوال أن تعمل بدون مُدخلات ، لكنها نادرة جدًا. في حالة calculCube، ليس من المنطقي أن نسميها دون إعطائها طول حافة المكعب للقيام بالرياضيات!
إذا كنا نريد أن نرسل لها مُدخل (رقم ، سلسلة ، منطقية ...) ، يجب أن تكتب بين قوسين:

<?php
calculCube(4);
?>
لذلك calculCube عليها ان تعمل مع عدد 4.
في كثير من الأحيان ، تقبل الدوال العديد من المُدخلات. في هذه الحالة ، يجب فصلها بفواصل:

<?php
fonctionImaginaire(17, 'Green', true, 41.7);
?>
ستتلقى هذه الدالة أربعة مُدخلات: 17 ، النص "Green" ، true و 41.7.
الحصول على القيمة المرجعة من الدالة
الآن وبعد أن عرفنا كيفية استدعاء دالة وحتى إرسالها العديد من المُدخلات ، يتعين علينا استرداد ما تعيده إلينا إذا كانت ترجع شيئًا ما. هناك بالفعل نوعان من الدوال:
  • تلك التي لا تُرجع أي قيمة (لا تمنعهم من تنفيذ الإجراءات) ؛
  • تلك التي تعيد قيمة.
إذا لم تُرجع الدالة أي قيمة ، فلن يكون هناك شيء يمكن فعله أكثر من الاكواد السابقة. تسمى الدالة وتؤدي وظيفتها ولا تُطلب أي شيء آخر.
من ناحية أخرى ، إذا كانت الدالة تُرجع قيمة (كما يجب أن تكون calculCube ) ، فإننا نسترجعها من متغير ، مثل هذا:

<?php
$volume = calculCube(4);
?>
في سطر مثل هذا ، يحدث بالفعل الأمران التاليان (بالترتيب ومن اليمين إلى اليسار):
  1. calculCube تسمى الدالة بالمُدخل 4 ؛
  2. يتم تخزين النتيجة التي يتم إرجاعها بواسطة الدالة (عند الانتهاء) في المتغير $volume .
$volume سيكون المتغير 64 بعد تنفيذ هذا السطر من التعليمات البرمجية!
من الجيد أن نعرف: كما رأينا ، من الممكن إرسال العديد من المُدخلات إلى دالة ما ؛ ومع ذلك ، يمكن للأخيرة إرجاع قيمة واحدة فقط. هناك طريقة للتغلب على هذا القيد من خلال الجمع بين المتغيرات في مجموعة من المتغيرات (تسمى المصفوفة  ) التي ناقشناها في الفصل السابق.

الدوال الجاهزة للاستعمال في PHP


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

<?php
$phrase = 'Hello everyone ! I am a sentence';
$longueur = strlen($phrase);
 
 
echo 'الجملة التالية تتكون من  ' . $longueur . ' حرفا :
' . $phrase; ?>
النتيجة:
web dynamique php
عد عدد الاحرف
احذر ، قد يكون عدد الأحرف غير دقيق في بعض الأحيان. هذا بسبب خلل PHP في معالجة ترميزات الحروف. سيتم تصحيح هذا في الإصدارات المستقبلية من اللغة.
str_replace : بحث واستبدال
str_replace استبدال سلسلة واحدة بأخرى. على سبيل المثال:

<?php
$ma_variable = str_replace('b', 'p', 'bim bam boum');
 
echo $ma_variable;
?>
النتيجة:

web dynamique php
استبدال الحرف
نحتاج إلى تحديد ثلاثة مُدخلات:
  1. السلسلة التي نبحث عنها ( هنا ، "b" ( يمكننا البحث عن كلمة أيضًا ؛
  2. السلسلة التي نريد وضعها ( هنا ، نضع "p" بدلاً من "b" ) ؛
  3. السلسلة المُستعملة للبحث.
STR_SHUFFLE : مزيج الحروف
للحصول على المتعة بخلط حروف سلسلتك بشكل عشوائي!

<?php
$chaine = 'Cette chaîne va être mélangée !';
$chaine = str_shuffle($chaine);
 
echo $chaine;
?>
النتيجة:

web dynamique php
STRTOLOWER : الكتابة بأحرف صغيرة
Strtolower يضع جميع أحرف السلسلة في أحرف صغيرة.

<?php
$chaine = 'COMMENT CA JE CRIE TROP FORT ???';
$chaine = strtolower($chaine);
 
echo $chaine;
?>
النتيجة:

web dynamique php
لاحظ أن هناك  strtoupper شيئًا يفعل الشيء نفسه في الاتجاه المعاكس: أحرف صغيرة → كبيرة.
استرجع التاريخ
سنكتشف الدالة التي ترجع الوقت والتاريخ انها date (اسم سهل التذكر ، اعترف ! ) . هذه الدالة يمكن أن تعطي الكثير من المعلومات. فيما يلي المُدخلات الرئيسية لمعرفة:
مُدخل وصف
H ساعة
i دقيقة
d يوم
m شهر
Y عام
تحذير ! احترام استعمال الاحرف الكبيرة و الصغيرة ، وهذا هو المهم!
إذا كنت ترغب في عرض السنة ، فيجب عليك إرسال المُدخل Y إلى الدالة:

<?php
$annee = date('Y');
echo $annee;
?>
بالطبع يمكننا أن نفعل ما هو أفضل ، وهنا هو التاريخ والوقت الكامل:

<?php

$jour = date('d');
$mois = date('m');
$annee = date('Y');

$heure = date('H');
$minute = date('i');

echo ' التاريخ ' . $jour . '/' . $mois . '/' . $annee . 'انها  ' . $heure. ' : ' . $minute;
?>
النتيجة:

web dynamique php
تاريخ العرض
و هنا العمل! يمكننا عرض التاريخ والوقت في غمضة عين.
عادة ، عندما تختبر الكود السابق ، يجب أن يكون لديك التاريخ والوقت بالضبط (لذلك لا تتردد في محاولة تشغيل هذا الكود المصدري في المنزل).
إذا لم يكن الوقت جيدًا ، فاعلم أنه الخادم الذي يوفر الوقت ، فسوف تفهم الفرق الزمني إذا كنت تعيش في بلد آخر.

إنشاء دوال خاصة بك


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

<?php
$nom = 'Sandra';
echo 'مرحبا, ' . $nom . ' !
'; $nom = 'Patrick'; echo 'مرحبا, ' . $nom . ' !
'; $nom = 'Claude'; echo 'مرحبا, ' . $nom . ' !
'; ?>
كما ترى ، إنها متعبة بعض الشيء على المدى الطويل ... لذلك سنقوم بإنشاء دالة تقوم بها لنا!

<?php
function marhaba($nom)
{
    echo 'مرحبا ' . $nom . ' !
'; } marhaba('Marie'); marhaba('Patrice'); marhaba('Edouard'); marhaba('Pascale'); marhaba('François'); marhaba('Benoît'); marhaba('Père Noël'); ?>
النتيجة:

web dynamique php
إذن ما هو الاختلاف هنا؟ هناك في المقام الأول حداثة خاصة: إنها الدالة. في الواقع ، فإن الاسطر الموجودة في الأعلى تجعل من الممكن تحديد الدالة (اسمها ، ما تستطيع القيام به ، وما إلى ذلك). إنهم لا يفعلون أي شيء خاص ، لكنهم يقولون لـ PHP : "  توجد دالة marhaba الآن" .
لإنشاء دالة ، يجب عليك الكتابة  function (باللغة العربية ، تعني "دالة" ) . ثم اعطها اسما. على سبيل المثال ، هذه تسمى marhaba .
ما هو أكثر أهمية بعد ذلك هو ما نضعه بين قوسين: هناك متغير. هذا هو المُدخل الذي يجب أن تستخدمه الدالة ، بحيث تعرف بفضله لمن ستقول مرحباً في حالتنا. يجب بالضرورة استدعاء دالتنا باستخدام مُدخل (الاسم) وإلا فلن تعمل.
ربما لاحظت أن هذا السطر هو السطر الوحيد الذي لا ينتهي بفاصلة منقوطة. هذا أمر طبيعي ، إنه ليس تعليمة ولكن مجرد "بطاقة هوية" للدالة (اسمها ، مُدخلاتها ...).
ثم أنت تلاحظ الأقواس. أنها تحدد بداية و نهاية الدالة. يبدأ الأخير بمجرد وجود واحد {وينتهي عندما يكون هناك واحد } . بين الاثنين ، هناك محتواها.
هنا ، تحتوي الدالة على عبارة واحدة فقط ( echo) . لقد جعلتها سهلة و ذلك لنستطيع ان نبدأ ولكنك سترى أنه في الممارسة العملية ، تحتوي الدالة على تعليمات أكثر من ذلك.
هذا كل شيء ، يتم إنشاء دالة ، لا تحتاج إلى مسها بعد الآن. بعد ذلك ، لإستدعائها ، فقط أشر إلى اسمها ، وحدّد مٌدخلاتها بين قوسين. أخيرًا ، لا تنس الفاصلة المنقوطة الشهيرة (  ; ) لأنها تعليمة. مثلا :

<?php
marhaba('Marie');
?>
الأمر متروك لك للمحاولة! قم بإنشاء صفحة بها هذه الدالة وقل مرحباً لمن تريد ، سترى: إنها تعمل
نصيحة لك للتدرّب على الدوال: إستعمل أمثلتي و حاول ان تغير فيهم شيئا فشيئا لمعرفة ما يعطيه. يمكن أن يكون هناك دوال بسيطة للغاية كما يمكن وٌجود دوال معقدة للغاية ، لذلك تابعها بعناية.
المثال الثاني: حساب حجم المخروط
هيا ، نحن نتحرك.  الدالة marhaba التي أنشأناها لم تُرجع أي قيمة ، فقد كانت محتوى لتنفيذ إجراءات (عرض نص ، في هذه الحالة). الآن سنقوم بإنشاء دالة تقوم بإرجاع قيمة.
هنا سيتم استخدام دالتنا لإجراء عملية حسابية: حساب حجم المخروط. المبدأ هو: أن تعطي الدالة نصف قطرها وارتفاعها المخروطي ، تعمل وتعيد الحجم الذي تبحث عنه.
جيد: بادئ ذي بدء ، عليك أن تعرف الصيغة لحساب حجم مخروط. لقد نسيت كيف نفعل؟
تحتاج إلى معرفة نصف قطر القاعدة والارتفاع. الصيغة المستخدمة للعثور على وحدة التخزين هي:
شعاع*شعاع * π* ارتفاع * 1/3
. انظر الشكل التالي.
web dynamique php
تمثيل مخروط
إذا اتبعت جيدًا في الفصل السابق ، فعادة ما تكون قادرًا على فهم الكود أدناه. المشكلة الوحيدة إذا كان علينا القيام بذلك عدة مرات: إنها متكررة بسرعة. انظر إلى:

<?php
// حساب حجم مخروط شعاعه 5 والارتفاع 2
$volume = 5 * 5 * 3.14 * 2 * (1/3);
echo 'حجم مخروط دائرة شعاعها 5 وارتفاع 2 هو : ' . $volume . ' صم3
'; //4 حساب حجم مخروط شعاعه 3 والارتفاع $volume = 3 * 3 * 3.14 * 4 * (1/3); echo ' حجم مخروط دائرة شعاعها 3 وارتفاع 4 هو : ' . $volume . ' صم3
'; ?>
سنقوم بالتالي بإنشاء دالة VolumeCone، والتي سوف تحسب حجم المخروط وفقا لنصف القطر والارتفاع. هذه الدالة لن تعرض أي شيء ، نحن فقط نريدها أن تعيد الحجم الذي نبحث عنه.
انظر بعناية إلى الكود أدناه ، ويقدم حالتين:

<?php
// أدناه ، الدالة التي تحسب حجم المخروط
function VolumeCone($rayon, $hauteur)
{
   $volume = $rayon * $rayon * 3.14 * $hauteur * (1/3); 
   return $volume; // يشير إلى قيمة الارجاع ، وهنا حجم
}

$volume = VolumeCone(3, 1);
echo 'حجم مخروط دائرة شعاعها 3 وارتفاع 1 هو ' . $volume;
?>
نظرة عن كثب على دالة، وهناك بيان: return $volume; .
تحدد هذه العبارة ما يجب أن ترجعه الدالة. هنا ، تعيد الحجم. إذا كنت قد كتبت return 15، فستعرض في كل مرة مجلدًا بحجم 15 (إنه أمر سخيف بعض الشيء ، لكنني أحاول!).
تقوم الدالة بإرجاع قيمة ، والتي يجب استرجاعها في متغير:

<?php
$volume = VolumeCone(3, 1);
?>
بعد ذلك ، يمكننا عرض ما يحتوي عليه المتغير باستخدام تعليمة echo .
إمكانيات إنشاء دوال لا حصر لها تقريبا. من الواضح أنك لن تضطر في العادة إلى إنشاء دالة تحسب حجم المخروط (من هو مجنون بما يكفي للقيام بذلك؟). في الواقع ، كل ما أطلبه منك هنا هو فهم أن الدالة يمكن أن تكون عملية للغاية وتوفر لك الوقت.

في الخلاصة


  • الدوال هي كتل من التعليمات البرمجية التي تنفذ التعليمات بناء على معايير معينة.
  • دوال عادة ما يكون لها مُدخلات ومُخرجات. على سبيل المثال ، إذا قمت بتعيين دالة حساب المكعب إلى 4 ، فإنها تُرجع 64 عند الإخراج.
  • يوفر PHP مئات ومئات من الدوال الجاهزة للاستخدام لجميع أنواع المهام: إرسال بريد إلكتروني ، واستعادة الوقت ، وتشفير كلمات المرور ، إلخ.
  • إذا لم يقدم PHP الدالة التي تحتاجها ، يمكنك إنشائها باستخدام الكلمة الأساسية function .