أجهزة الكمبيوتر شبابيك إنترنت

كيف تبدو الوظيفة في php. بي أتش بي. وظائف على أساس الشرط

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

دعنا نكتب معك مثالاً عن دالة أولية تطبع فقط " مرحبا بالعالم":

وظيفة printHello () (
صدى "مرحبا العالم" ؛
}
printHello () ؛
?>

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

وظيفة printHello ($ str) (
صدى $ str؛
}
printHello ("Hello World !!!") ؛
?>

هنا أنشأنا وظيفة ، ولكن مع معلمة. ثم نعرض قيمة هذه المعلمة من خلال صدى صوت... خارج الوظيفة printHello ()نسميها ونمرر الخيط " مرحبا بالعالم !!!". كما ترى ، كل شيء بسيط هنا.

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

دالة printArray ($ arr، $ bool = false) (
$ str = ""؛
لـ ($ i = 0 ؛ $ i< count($arr); $i++)
$ str. = "العنصر $ i = $ arr [$ i]
";
إذا ($ bool) إرجاع $ str؛
صدى $ str؛
}
$ a = مجموعة (15 ، 12 ، 13 ، 14) ؛
printArray ($ a) ؛
$ str = printArray ($ a، true) ؛
صدى $ str؛
?>

المعنى هنا هو كما يلي: مهمة الوظيفة هي تكوين سلسلة نصية من مصفوفة ، أي ببساطة تحويل المصفوفة إلى نوع سلسلة. في هذا المثال ، الأكثر إثارة للاهتمام هو المعلمة منطقيوهو الافتراضي. لو هي خاطئة(بشكل افتراضي ، إذا لم تحدد قيمة مختلفة) ، فسيتم طباعة السطر على الفور في المتصفح ، وإذا تم تمريره حقيقية(كما هو الحال مع استدعاء الوظيفة الثانية) ، ثم يتم إرجاع السلسلة ( عودة $ str) وظيفة. إليك مثال بسيط على إنشاء وظائف مع المعلمات الافتراضية.

وبالتالي، ما هي الوظيفة علىبي أتش بي?

وظيفة -إنه برنامج صغير يقوم ببعض الإجراءات المفيدة وينتج نتيجة نهائية.
دعنا نلقي نظرة على التخطيطي:

دعنا نحاول كتابة برنامج صغير باستخدام قالب وظيفة جاهز.
قالب الوظيفة الجاهزة:

لنفترض أننا بحاجة إلى كتابة دالة يمكنها حساب مجموع العددين 5 و 2. ننظر إلى النموذج ونكتب:

دعنا نحلل الكود.
وظيفة suma () هي وظيفة تسمى suma ؛
صدى 5 + 2 ؛ - في جسم الوظيفة ، أشرنا إلى ضرورة جمع الرقمين 5 و 2 معًا (5 + 2) ؛
سوما () ؛ - نسمي الوظيفة. استدعاء وظيفة يعني تنفيذها. بمعنى أنه يجب إكمال مهمة 5 + 2 وإعطاء النتيجة 7.

الآن دعونا نحاول النظر في الوظائف على مراحل.

مراحل إنشاء دالة في PHP

المسرحأنا... قم بإنشاء وظيفة
تذكر قالب جاهزالمهام:

هذه هي الطريقة التي يتم بها إنشاء وظيفة PHP.
دعنا نكتب النص في جسم الوظيفة " أنا سعيد برؤيتك على موقع المدونة».
فقط لا تنس: نكتب النص من خلاله.

"; } ?>

الآن أنت بحاجة إلى استدعاء وظيفة "الموقع ()".

المسرحثانيًا... استدعاء وظيفة جاهزة قيد التشغيلبي أتش بي
تم إنشاء الوظيفة ويجب الآن تنفيذها. لتنفيذ وظيفة وعرضها ، يكفي تحديد "اسم الوظيفة () ؛ "

موقع()؛

سيبدو مثل هذا:

وظائف PHP - الموقع "؛) الموقع () ؛؟>

يمكنك القيام بذلك على النحو التالي:

وظائف PHP - الموقع "؛)؟> نص كثير ... ..الكثير من النصوص ...

أدخل العنوان في متصفحك:

نتيجة:

دوال PHP مع الوسائط

كل الأمثلة مع الدوال أعلاه كانت بدون وسيطات. سأشرح لك ماهية الحجة في الكود:

لذلك ، قمت بإنشاء وظيفة باسم "الموقع". في المعلمات (حيث تكون الأقواس) أضفت متغيرين $ a و $ b مفصولين بفاصلات.

موقع الوظيفة ($ a، $ b)

$ a و $ b وسيطان.
صدى "$ a + $ b =" ؛ - هنا قمت بعرض النص على الشاشة. النتيجة: 5 + 5 =
صدى $ a + $ b ؛ - أشرت هنا إلى الوظيفة أنه يجب إضافة المتغير $ a و $ b معًا.
الموقع (15 ، 5) ؛ - تسمى الوظيفة. انتباه: بين قوسين أشرت إلى وسيطين (15 ، 5) ، يتوقعهما المتغير $ a و $ b. سيحصل المتغير $ a على المتغير الأول - 15 ، $ b - المتغير 5 الثاني.

بالنسبة لأولئك الذين لا يفهمون مكان استبدال الحجة وبأي ترتيب ، يوجد هنا رسم تخطيطي:

إذن ، الكود النهائي:

احفظ باسم "function.php" في مجلد "test-1" الملقم المحلي(انظر الدرس 1).

أدخل العنوان في متصفحك:

https: //localhost/test-1/function.php

نتيجة:

اسمحوا لي أن أقوم بتعقيد الوظيفة قليلاً وجعلها أكثر إثارة للاهتمام. سأضيف عنوان المدونة إلى الحجة وأكتب اسم الارتباط.

ستتلقى الوظيفة المسماة "site" الوسيطة https: // site / في متغير $ link ، وسيتلقى المتغير $ title نص الارتباط - " موقع المدونة - إنشاء موقع!»

الكود النهائي:

احفظ باسم "function.php" في مجلد "test-1" لخادمك المحلي (انظر الدرس 1).

أدخل العنوان في متصفحك:

https: //localhost/test-1/function.php

نتيجة:

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

1. إنشاء وظائف بعدد متغير من الوسائط

ربما تعلم بالفعل أن PHP تسمح لنا بإنشاء وظائف باستخدام وسيطات اختيارية. سأعرض الآن وظيفة يمكن أن يتغير فيها عدد الحجج من حالة إلى أخرى.

لكن أولاً ، لنتذكر كيف ننشئ الوظائف بالطريقة المعتادة:

// دالة مع معلمتين اختياريتين تعمل foo ($ arg1 = ""، $ arg2 = "") (صدى "arg1: $ arg1 \ n" ؛ صدى "arg2: $ arg2 \ n" ؛) foo ("مرحبًا"، "العالمية")؛ / * سيخرج: arg1: hello arg2: world * / foo ()؛ / * سينتج: arg1: arg2: * /

لنرى الآن كيف يمكنك كتابة دالة بعدد غير محدود من الوسائط. سيتم استخدام طريقة func_get_args () لهذا:

// لا تحدد أي وسيطات دالة foo () (// تُرجع مصفوفة من الوسائط التي تم تمريرها $ args = func_get_args () ؛ foreach ($ args as $ k => $ v) (echo "arg". ($ k + 1). ": $ v \ n"؛)) foo ()؛ / * لن يطبع أي شيء * / foo ("hello")؛ / * طباعة arg1: hello * / foo ("hello"، "world"، "again")؛ / * يطبع arg1: مرحبًا arg2: world arg3: مرة أخرى * /

2. استخدام Glob () للبحث عن الملفات

غالبًا ما تكون أسماء الوظائف لا تحتاج إلى شرح. لا يمكن قول الشيء نفسه عن وظيفة glob ().

دون الخوض في التفاصيل ، فإن وظيفته تشبه طريقة scandir (). يسمح لك بالعثور على الملف المطلوب حسب النموذج:

// اعثر على كافة ملفات php $ files = glob ("*. php") ؛ print_r (ملفات $) ؛ / * سينتج: Array (=> phptest.php => pi.php => post_output.php => test.php) * /

للعثور على ملفات من عدة أنواع ، عليك أن تكتب مثل هذا:

// اعثر على كافة ملفات php و txt $ files = glob ("*. (php، txt)"، GLOB_BRACE)؛ print_r (ملفات $) ؛ / * الإخراج: Array (=> phptest.php => pi.php => post_output.php => test.php => log.txt => test.txt) * /

يمكنك أيضًا تحديد المسار في القالب:

ملفات $ = glob ("../ images / a * .jpg")؛ print_r (ملفات $) ؛ / * الإخراج: صفيف (=> ../images/apple.jpg => ../images/art.jpg) * /

للحصول على المسار الكامل للمستند ، استخدم طريقة realpath ():

ملفات $ = glob ("../ images / a * .jpg")؛ // قم بتطبيق وظيفة "realpath" على كل عنصر من عناصر المصفوفة $ files = array_map ("realpath"، $ files)؛ print_r (ملفات $) ؛ / * سينتج: Array (=> C: \ wamp \ www \ images \ apple.jpg => C: \ wamp \ www \ images \ art.jpg) * /

3. معلومات عن الذاكرة المستخدمة

إذا كنت تتعقب مقدار الذاكرة المستهلكة لعمل البرامج النصية الخاصة بك ، فمن المحتمل أنك ستقوم بتحسينها في كثير من الأحيان.

PHP لديها أداة قوية لتتبع الذاكرة. في أجزاء مختلفة من البرنامج النصي ، يمكن أن تكون الأحمال مختلفة. من أجل الحصول على قيمة الذاكرة المستخدمة حاليًا ، يجب استخدام طريقة memory_get_usage (). لإصلاح الحد الأقصى لمقدار الذاكرة المستخدمة ، استخدم memory_get_peak_usage ()

صدى "الأولي:" .memory_get_usage (). "بايت \ n" ؛ / * الأولي: 361400 بايت * / // لنقدم القليل من التحميل لـ ($ i = 0 ؛ $ i< 100000; $i++) { $array = md5($i); } // и ещё for ($i = 0; $i < 100000; $i++) { unset($array[$i]); } echo "Final: ".memory_get_usage()." bytes \n"; /* Final: 885912 bytes */ echo "Peak: ".memory_get_peak_usage()." bytes \n"; /* Peak: 13687072 bytes */

4. معلومات حول المعالج

للقيام بذلك ، تحتاج إلى استخدام طريقة getrusage (). لاحظ ، مع ذلك ، أن هذه الميزة لن تعمل على Windows.

Print_r (getrusage ()) ؛ / * مجموعة المطبوعات (=> 0 => 0 => 2 => 3 => 12692 => 764 => 3864 => 94 => 0 => 1 => 67 => 4 => 0 => 0 => 0 => 6269 => 0) * /

ستكون الصورة الموضحة أعلاه واضحة لأولئك الذين لديهم خبرة في إدارة النظام. لأي شخص آخر ، نقدم فك التشفير:

  • ru_oublock: عدد عمليات كتابة الكتلة
  • ru_inblock: عدد عمليات قراءة الكتلة
  • ru_msgsnd: عدد الرسائل المرسلة
  • ru_msgrcv: عدد الرسائل المستلمة
  • ru_maxrss: أقصى حجم لمجموعة غير مقسمة إلى صفحات
  • ru_ixrss: إجمالي الذاكرة المشتركة
  • ru_idrss: إجمالي كمية البيانات غير المشتركة
  • ru_minflt: عدد صفحات الذاكرة المستخدمة
  • ru_majflt: عدد أخطاء الصفحات المفقودة
  • ru_nsignals: عدد الإشارات المستقبلة
  • ru_nvcsw: عدد مفاتيح تبديل سياق العملية
  • ru_nivcsw: عدد مفاتيح تبديل السياق المفروضة
  • ru_nswap: عدد مرات الوصول إلى القرص أثناء الترحيل
  • ru_utime.tv_usec: وقت المستخدم (ميكرو ثانية)
  • ru_utime.tv_sec: الوقت المنقضي في وضع المستخدم (بالثواني)
  • ru_stime.tv_usec: وقت الوضع المميز (ميكرو ثانية)
  • ru_stime.tv_sec: وقت العمل في الوضع المميز (بالثواني)

من أجل معرفة موارد معالجك التي يستخدمها البرنامج النصي ، تحتاج إلى "وقت المستخدم" (الوقت في وضع المستخدم) و "وقت النظام" (الوقت في الوضع المميز). يمكنك الحصول على النتيجة بالثواني والميكروثانية. لتحويل إجمالي عدد الثواني إلى رقم عشري ، تحتاج إلى قسمة قيمة الميكروثانية على مليون وإضافة ثوانٍ إلى القيمة.

مرتبك بطريقة ما. هذا مثال:

// الراحة لمدة 3 ثوان من النوم (3) ؛ $ data = getrusage ()؛ صدى "وقت المستخدم:". ($ data ["ru_utime.tv_sec"] + $ data ["ru_utime.tv_usec"] / 1000000)؛ صدى "وقت النظام:". (بيانات دولار ["ru_stime.tv_sec"] + بيانات دولار ["ru_stime.tv_usec"] / 1000000) ؛ / * مخرجات وقت المستخدم: 0.011552 وقت النظام: 0 * /

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

إليك مثال آخر:

// حلقة 10 ملايين مرة لـ ($ i = 0 ؛ $ i<10000000;$i++) { } $data = getrusage(); echo "User time: ". ($data["ru_utime.tv_sec"] + $data["ru_utime.tv_usec"] / 1000000); echo "System time: ". ($data["ru_stime.tv_sec"] + $data["ru_stime.tv_usec"] / 1000000); /* выводит User time: 1.424592 System time: 0.004204 */

استغرق النص 1.4 ثانية من وقت وحدة المعالجة المركزية. في هذه الحالة ، تكون أوقات مكالمات النظام منخفضة بشكل عام.

وقت النظام هو الوقت الذي يقضيه المعالج في تنفيذ طلبات النظام إلى النواة نيابة عن البرنامج. مثال:

$ start = microtime (صحيح) ؛ // استدعاء microtime كل 3 ثوان بينما (microtime (صحيح) - $ start< 3) { } $data = getrusage(); echo "User time: ". ($data["ru_utime.tv_sec"] + $data["ru_utime.tv_usec"] / 1000000); echo "System time: ". ($data["ru_stime.tv_sec"] + $data["ru_stime.tv_usec"] / 1000000); /* выводит User time: 1.088171 System time: 1.675315 */

يتم استهلاك وقت النظام الآن أكثر بكثير مما كان عليه في المثال السابق. كل هذا بفضل طريقة microtime () ، التي تستخدم موارد النظام.

ومع ذلك ، تجدر الإشارة إلى أن الوقت المعروض قد لا يكون دقيقًا بسبب في هذا الوقت ، يتم استخدام موارد المعالج بواسطة برامج أخرى أيضًا ، مما قد يؤدي إلى حدوث خطأ بسيط.

5. الثوابت السحرية

هناك العديد من الثوابت السحرية في PHP مثل رقم السطر الحالي (__LINE__) ومسار الملف (__FILE__) ومسار الدليل (__DIR__) واسم الوظيفة (__FUNCTION__) واسم الفئة (__CLASS__) واسم الطريقة (__METHOD__) ومساحات الأسماء (__NAMESPACE__) .

لن نعتبرهم جميعًا. دعنا نرى فقط زوجين:

// يعتمد هذا النص البرمجي على موقع الملف الحالي ويمكن أن يتسبب // في حدوث مشكلات إذا تم استخدامه من مجلدات مختلفة تتطلب _once ("config / database.php") ؛ // لن يتسبب هذا البرنامج النصي في حدوث مشكلات تتطلب مرة واحدة (dirname (__ FILE__). "/config/database.php") ؛

استخدم __LINE__ عند تصحيح أخطاء البرامج النصية:

// code // ... my_debug ("بعض رسائل التصحيح" ، __LINE__) ؛ / * يطبع السطر 4: بعض رسائل التصحيح * / // المزيد من الكود // ... my_debug ("رسالة تصحيح أخرى" ، __LINE__) ؛ / * طباعة السطر 11: رسالة تصحيح أخرى * / function my_debug ($ msg، $ line) (صدى "Line $ line: $ msg \ n"؛)

6. إنشاء معرفات فريدة

هناك أوقات تحتاج فيها إلى إنشاء سلسلة فريدة. لقد رأيت عدة مرات أنهم يستخدمون وظيفة md5 () لحل هذه المشكلة:

// إنشاء سلسلة عشوائية صدى md5 (time (). mt_rand (1،1000000)) ؛

لكن في الواقع ، PHP لها وظيفة خاصة uniqid () لهذا الغرض.

// إنشاء سلسلة عشوائية echo uniqid () ؛ / * يطبع 4bd67c947233e * / // مرة أخرى echo uniqid () ؛ / * سوف تطبع 4bd67c9472340 * /

بالعين المجردة ، يمكنك أن ترى أن الأحرف الأولى متشابهة بعبارة ملطفة ... هذا يرجع إلى حقيقة أن هذه الطريقة تستخدم وقت الخادم لتوليد الأحرف. إنه مفيد حتى لأن يتم الحصول على جميع القيم المولدة بترتيب أبجدي ، مما يجعل من الممكن فرزها بسرعة.

لتقليل فرص الحصول على نسخة مكررة ، يمكننا إضافة بادئة أو استخدام معامل ثانٍ (سيزيد عدد الأحرف):

// مسبوقة بـ echo uniqid ("foo_") ؛ / * سيطبع foo_4bd67d6cd8b8f * / // بالمعامل الثاني echo uniqid ("" ، true) ؛ / * يطبع 4bd67d6cd8b926.12135106 * / // كلاهما echo uniqid ("bar _"، true) ؛ / * يطبع bar_4bd67da367b650.43684647 * /

تقوم هذه الطريقة بإنشاء خطوط أصغر من md5 ، وبالتالي توفير مساحة.

7. التسلسل

هل اضطررت يومًا إلى تخزين البيانات المعقدة في قاعدة بيانات أو في ملف؟ من أجل تحويل كائن إلى سلسلة ، توفر PHP وظيفة خاصة.

بشكل عام ، هناك طريقتان من هذه الطرق: التسلسل () وإلغاء التسلسل ()

// complex array $ myvar = array ("hello"، 42، array (1، "two")، "apple")؛ // تحويل إلى سلسلة $ string = serialize ($ myvar) ؛ صدى $ سلسلة؛ / * سينتج a: 4: (i: 0؛ s: 5: "hello"؛ i: 1؛ i: 42؛ i: 2؛ a: 2: (i: 0؛ i: 1؛ i: 1؛ s: 3: "two"؛) i: 3؛ s: 5: "apple"؛) * / // احصل على القيمة الأصلية $ newvar = unserialize ($ string)؛ print_r ($ newvar) ؛ / * ستطبع Array (=> hello => 42 => Array (=> 1 => two) => apple) * /

هذه هي الطريقة التي تعمل بها هذه الوظائف. ومع ذلك ، نظرًا للنمو الهائل في شعبية JSON ، أضافت PHP 5.2 طريقتين json_encode () و json_decode (). عملهم مشابه للتسلسل ():

// complex array $ myvar = array ("hello"، 42، array (1، "two")، "apple")؛ // التحويل إلى سلسلة $ string = json_encode ($ myvar) ؛ صدى $ سلسلة؛ / * سيطبع ["hello"، 42 ،، "apple"] * / // استعادة القيمة الأصلية $ newvar = json_decode ($ string)؛ print_r ($ newvar) ؛ / * مجموعة المطبوعات (=> hello => 42 => Array (=> 1 => two) => apple) * /

هذا الخيار أكثر إحكاما ومتوافقًا مع لغات أخرى مثل JavaScript. ومع ذلك ، يمكن أن يحدث فقدان البيانات عند العمل مع كائنات معقدة للغاية.

8. ضغط الخيوط

عندما نتحدث عن الضغط ، فإن أرشفة الملفات بتنسيق ZIP تتبادر إلى الذهن على الفور. يوفر PHP القدرة على ضغط الجمل الطويلة دون أي ملفات.

سيوضح المثال التالي كيفية عمل الدالتين gzcompress () و gzuncompress ():

$ string = "Lorem ipsum dolor sit amet، consectetur adipiscing elit. Nunc ut elit id mi ultricies adipiscing. Nulla facilisi. present pulvinar، sapien vel feugiat vestibulum، nulla dui premium orci، non ultricies elit lacus quis ante.، consectitur. Aliquam premium ullamcorper urna quis iaculis. ornare in mollis in، mollis sed nunc. Etiam at justo in leo congue mollis. Nullam in neque eget metus hendrerit scelerisque eu non enim. Ut malesuada lacus eu nulllesism bibodna id eoda uru. "؛ مضغوط $ = gzcompress (سلسلة $) ؛ صدى "الحجم الأصلي:". strlen (سلسلة $). "\ n"؛ / * ستتم طباعة الحجم الأصلي: 800 * / echo "الحجم المضغوط:". strlen (مضغوط $). "\ n"؛ / * ستتم طباعة الحجم المضغوط: 418 * / // return $ original = gzuncompress ($ المضغوط) ؛

يمكننا تقليل حجم النص بنسبة 50٪. للغرض نفسه ، يمكنك استخدام طريقتي gzencode () و gzdecode () ، اللتين تستخدمان خوارزمية ضغط مختلفة.

9. نفذ قبل الإنهاء

PHP لها وظيفة register_shutdown_function () تسمح لك بتنفيذ بعض التعليمات البرمجية قبل إنهاء البرنامج النصي.

لنفترض أنك تريد معرفة بعض المعلومات ... وقت تشغيل البرنامج النصي:

// احصل على وقت البدء $ start_time = microtime (صحيح) ؛ // بعض العمليات // ... // طباعة صدى وقت التشغيل "استغرق التنفيذ:". (microtime (صحيح) - $ start_time). "ثواني." ؛

للوهلة الأولى ، قد يبدو هذا وكأنه مهمة تافهة. لهذه الأغراض ، يمكنك وضع الكود في نهاية الملف. ومع ذلك ، إذا تم تشغيل وظيفة exit () في مكان ما قبل ذلك ، فلن يعمل هذا الرمز أبدًا. أيضًا ، لن يعمل إذا كان هناك خطأ في الصفحة أو إذا قاطع المستخدم تحميل الصفحة (بالنقر فوق الزر المقابل في متصفحه) ؛

عند استخدام طريقة register_shutdown_function () ، سيتم تنفيذ الكود على أي حال:

$ start_time = microtime (صحيح) ؛ register_shutdown_function ("my_shutdown") ؛ الوظيفة my_shutdown () (start_time $ العالمي ؛ صدى "التنفيذ استغرق:". (microtime (صحيح) - $ start_time). "seconds." ؛)

انتاج |

PHP هي كوكب كامل لا يتوقف عن إدهاشنا بمحتواها. ما رأيك في هذه الوظائف؟

تسمح لك طريقة POST بتمرير المعلومات التي أدخلها المستخدم في نموذج ويب مضمن في العلامات

... سيتم تخزين جميع المعلومات المسجلة في حقول النموذج ، وبعد النقر على الزر ، سيتم نسخ البيانات إلى المصفوفة العامة $ _POST ، والتي من خلالها يمكن استدعاء وظيفة معالج النموذج.

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

مثال على الوظيفة () (
// قائمة العمليات في الوظيفة
}
?>

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



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

إذا (isset ($ _ POST ['function_start']) == 'go') (
مثال ()؛ )
?>

يتحقق هذا الرمز من وجود البيانات المنقولة من النموذج في البرنامج النصي باستخدام وظيفة isset (). إذا تم إدخال بيانات في النموذج المخفي ، فسيبدأ تنفيذ الوظيفة المعلنة مسبقًا.

يمكن أن يحدث نقل المعلومات بطريقة GET دون استخدام بيانات النموذج من خلال العنوان الذي تم إدخاله. وبالمثل ، في بداية البرنامج النصي ، يتم التصريح عن الوظيفة المطلوبة باستخدام تعليمة الوظيفة. بعد ذلك ، لنقل المعلومات ، على سبيل المثال ، يمكنك إنشاء رابط HTML للنموذج بدلاً من

:

تمرير GET

في هذه الحالة ، تتم إضافة عنصر الاختبار إلى العنوان بقيمة ثابتة قدرها 1 ، وهو أمر مطلوب لتهيئة الوظيفة. سيتم تخزين مقياس الاختبار في مصفوفة $ _GET العالمية.

if (isset ($ _ GET ["test"])) (
مثال ($ _ GET ["مثال"]) ؛ )

يتحقق هذا الرمز من وجود عنصر مصفوفة في شريط العنوان. بعد ذلك ، يقوم البرنامج النصي بتهيئة وظيفة المثال المُعلنة مسبقًا لمعالجة البيانات ثم تشغيل البرنامج.

لقد تعلمت من الدروس السابقة أن php لها وظائف مضمنة مثل. باستخدام الأمثلة ، يمكنك معرفة أن الوظيفة يمكن أن يكون لها معلماتها الخاصة ، والتي يشار إليها بين قوسين. يحتوي Php على العديد من الوظائف المضمنة لأي غرض ، ولكن في بعض الأحيان تحتاج إلى إنشاء وظيفتك الخاصة. هناك وظيفة بناء لهذا.يوضح هذا المثال البسيط كيفية إنشاء وظائف. تم إنشاء الوظيفة ويمكنك استخدامها. للقيام بذلك ، يجب أن يتم استدعاؤها مثل أي وظيفة قياسية.
يوضح هذا المثال جميع إمكانيات الوظيفة المخصصة تقريبًا. يمكنك تعيين المعلمات ، على سبيل المثال ، $ a ، $ b ، $ c. هذه المتغيرات مطلوبة لكي تعمل الوظيفة. يمكن ضبط المعلمة الأخيرة (أو العديد من الأخيرة) مسبقًا (إضافية). إذا لم يتم ملء المعلمات الإضافية عند استدعاء الوظيفة ، فستعمل الوظيفة مع القيم التي تم تعيينها في البداية. يمكن أن يكون أي رمز في نص الوظيفة. ثم يأتي تخصيص القيمة للدالة. أولئك. ستعيد الدالة قيمة.
يمكن للدالة إرجاع مصفوفة. لتحويلها إلى متغيرات ، يمكنك استخدام وظيفة القائمة:

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

إذا كان هذا الموقع مفيدًا لك ، فيمكنك المساعدة في تطويره عن طريق وضع