PHP هي لغة برمجة شبكات فعالة، نظرًا لمزايا الكتابة المرنة والتشغيل السريع، فقد أصبحت بسرعة اللغة المفضلة لمبرمجي الويب. أظهر استطلاع موثوق منذ وقت ليس ببعيد أن 31.6% من مواقع الويب تستخدم الآن لغة PHP باعتبارها لغة البرمجة الرئيسية من جانب الخادم.
ومع ذلك، ليس من السهل أن تصبح محترفًا في برمجة PHP. ليس الأمر كما يتخيله الكثير من الناس، طالما أنه يمكنك كتابة بعض الأكواد البسيطة بسرعة لحل مشكلة معقدة، فأنت خبير في برمجة PHP يحتاج أيضًا إلى مراعاة العديد من المشكلات الأخرى. الإرشادات الثلاثة التالية هي الإرشادات التي يجب على مبرمج PHP الناضج اتباعها أولاً في البرمجة.
1. الكسل من ذهب
2. أكتب كود جميل
3. تابع سرعة البرمجة وليس سرعة البرمجة
1. الكسل من ذهب
هل أنت مبرمج كسول؟ هذه الفكرة غريبة جداً! لأنه من المحتمل أن أكثر الأشخاص ازدحامًا في العالم هم مبرمجو الكمبيوتر. ولكن على وجه التحديد لأن المبرمجين مشغولون للغاية، فيجب عليهم أن يتعلموا أن يكونوا كسالى عند البرمجة.
بالنسبة للمبرمج، هناك طريقتان كسولتان: أولاً، استخدم بجرأة رموز البرامج الجاهزة الخاصة بأشخاص آخرين ودمج هذه الرموز في برامجك أو مشاريعك الخاصة. والثاني هو كتابة بعض الأكواد المفيدة لبناء مكتبة وظيفية، والتي يمكن استخدامها بسهولة عند كتابة البرامج في المستقبل، وهذا يوفر الكثير من العمل المتكرر ويجعلك أقل كسولًا بشكل طبيعي.
هاتان الطريقتان البطيئتان مناسبتان جدًا لمبرمجي PHP.
بادئ ذي بدء، PHP هي لغة ولدت ونمت في بيئة حرة ومفتوحة. هناك الآلاف من المبرمجين حول العالم الذين يسعون باستمرار لتحقيق الكمال في PHP، وهم أيضًا على استعداد لمشاركة براعتهم والأكواد التي يكتبونها مع الآخرين. يمكنك العثور على الكثير من أكواد البرامج الممتازة كل يوم من بعض مواقع PHP والقوائم البريدية ومجموعات الأخبار. بقول هذا، أنا لا أشجعك على الانتظار طوال اليوم حتى يكتب الآخرون لك التعليمات البرمجية، ولكن يمكنك "الوقوف على أكتاف الرجال العظماء" والترويج الكامل لـ "مبدأ الاستخدام" لرموز برامج الآخرين يوفر لك الكثير من المال. ثانيًا، في PHP، يمكنك بسهولة إنشاء مكتبة الوظائف الخاصة بك، والتي يمكن أن توفر عليك الكثير من المتاعب عند كتابة البرامج في المستقبل.
يقدم لك المؤلف أدناه العديد من الوظائف الشائعة. بعض هذه الوظائف تأتي من بعض المشاريع مفتوحة المصدر على الإنترنت، ويتم تحديد بعضها من القائمة البريدية. إذا كان بإمكانك إضافتها إلى مكتبتك الخاصة، فستجد نفسك تستفيد منها عاجلاً أم آجلاً.
1. وظائف معالجة قاعدة البيانات العامة
بالمقارنة مع وظائف CGI الأخرى، فإن إحدى مزايا PHP هي أنها تتمتع بقدرات قوية جدًا على معالجة قواعد البيانات. ومع ذلك، في PHP، يتم استخدام بعض الوظائف المحددة للتعامل مع قواعد بيانات مختلفة، وهناك نقص في وظائف معالجة قاعدة البيانات العامة. وهذا يقلل بشكل كبير من قابلية نقل كود البرنامج، مما يسبب أيضًا الكثير من الإزعاج لأصدقاء البرمجة المبتدئين.
على الإنترنت، قام العديد من المبرمجين بحل هذه المشكلة عن طريق تغليف الفئات. لقد كتبوا وظائف موحدة للتعامل مع أي قاعدة بيانات شائعة - سواء كانت Mysql، المشهورة في عالم Linux، أو SqlServer، المشهورة على نطاق واسع على منصات Windows. شخصيا، أحب استخدام هذه الوظائف كثيرا، لأنه يمكنك استخدام بعض الوظائف البسيطة مباشرة مثل "الاستعلام" و"السجل_التالي" دون الحاجة إلى النظر في أشياء معقدة مثل اتصالات قاعدة البيانات ومقابض قاعدة البيانات، ناهيك عن النظر في قاعدة البيانات التي تستخدمها .
إذا كنت بحاجة إلى هذه الوظائف، يمكنك الحصول عليها عن طريق زيارة عناوين URL التالية:
http://phplib.netuse.de/
http://phpclasses.UpperDesign.com/browse.html/package/20
http://phpdb.linuxbox.com/
http://www.phpchina.com
2. وظيفة تصحيح الأخطاء المتغيرة
كان تصحيح أخطاء برامج PHP دائمًا بمثابة صداع، فهي لا تحتوي على بيئة تجميع وتصحيح متكاملة مثل اللغات عالية المستوى مثل VB، ولا تحتوي على القدرة على استخدامها في برامج PHP مثل Perl، والتي تعمل مباشرة ضمن بيئة Linux أو DOS. في الواقع، يمكننا إكمال تصحيح أخطاء PHP باستخدام بيان الصدى بمرونة.
تتيح لك الوظائف التالية التحقق من نوع وقيمة أي متغير في البرنامج في أي وقت.
الدالة ss_array_as_string (&$array, $column = 0) {
$str = "المصفوفة( n";
بينما(قائمة($var, $val) = كل($array)){
لـ ($i = 0; $i < $column+1; $i++){
$str .= " ";
}
$str .= $var ==> ;
$str .= ss_as_string($val, $column+1)." n";
}
لـ ($i = 0؛ $i < $column؛ $i++){
$str .= " ";
}
إرجاع $str.);
}
الدالة ss_object_as_string (&$object, $column = 0) {
إذا (فارغ($كائن->اسم الفئة)) {
إرجاع "كائن $" ؛
} آخر {
$str = $object->classname."( n";
بينما (list(,$var) = every($object->persistent_slots)) {
لـ ($i = 0؛ $i < $column؛ $i++){
$str .= " ";
}
عالمي $$ فار؛
$str .= $var ==> ;
$str .= ss_as_string($$var, column+1)." n";
}
لـ ($i = 0؛ $i < $column؛ $i++){
$str .= " ";
}
إرجاع $str.);
}
}
الدالة ss_as_string (&$thing, $column = 0) {
إذا (is_object($thing)) {
إرجاع ss_object_as_string($thing, $column);
}
elseif (is_array($thing)) {
إرجاع ss_array_as_string($thing, $column);
}
إلسيف (هو_مزدوج($شيء)) {
إرجاع "Double(".$thing.""");
}
إلسيف (هو_طويل($شيء)) {
إرجاع "طويل(".$شيء.")";
}
وإلاسيف (is_string($thing)) {
إرجاع "String(".$thing."");
}
آخر {
إرجاع "غير معروف(".$thing.""");
}
}
عند الحاجة، ما عليك سوى إضافة الكود التالي إلى البرنامج لعرض أنواع وقيم المتغيرات (بما في ذلك المصفوفات والكائنات) المستخدمة في البرنامج:
echo ss_as_string($my_variable);
باستخدام العبارة التالية، يمكننا عرض قيم جميع المتغيرات في البرنامج مباشرة:
echo ss_as_string($GLOBALS);
3. الوظائف التي تتحكم في معلومات السجل
هناك طريقة أخرى مهمة لتصحيح أخطاء برامج PHP وهي عرض معلومات السجل. إذا كان بإمكانك التحكم بسهولة في مستوى معلومات السجل ومحتوى عرض معلومات السجل، فسيوفر ذلك مزيدًا من الراحة لتصحيح أخطاء البرنامج. يمكن للوظائف التالية تنفيذ هذه الوظيفة بسهولة.
$ss_log_level = 0;
$ss_log_filename = /tmp/ss-log;
$ss_log_levels = المصفوفة(
لا شيء => 0،
خطأ => 1،
معلومات => 2،
تصحيح => 3);
الدالة ss_log_set_level ($level = ERROR) {
عالمي $ss_log_level;
$ss_log_level = $level;
}
وظيفة ss_log ($مستوى، رسالة $) {
عالمي $ss_log_level، $ss-log-filename؛
إذا ($ss_log_levels[$ss_log_level] < $ss_log_levels[$level]) {
// لا تعرض معلومات السجل
عودة كاذبة.
}
$fd = fopen($ss_log_filename, "a+");
fputs($fd, $level. - [.ss_timestamp_pretty().] - .$message."n");
fClose($fd);
عودة صحيحة؛
}
وظيفة ss_log_reset () {
عالمي $ss_log_filename;
@unlink($ss_log_filename);
}
في الدالة أعلاه، هناك أربعة متغيرات لمستوى السجل. عند تشغيل برنامج PHP، يمكن تسجيل معلومات السجل وعرضها فقط عندما يكون مستوى السجل أقل من قيمة المستوى المحدد مسبقًا. على سبيل المثال، أضف العبارة التالية إلى البرنامج:
ss_log_set_level(INFO);
بعد ذلك، عند تشغيل برنامج PHP، يمكن تسجيل وعرض معلومات سجل مستوى الخطأ والمعلومات فقط، ويتم تجاهل معلومات مستوى التصحيح. بالإضافة إلى ذلك، يمكننا أيضًا ضبط محتوى المعلومات المعروض بالعبارات التالية:
ss_log(ERROR، "خطأ في مستوى الاختبار");
ss_log(INFO, "معلومات مستوى الاختبار");
ss_log(DEBUG, "testinglevel DEBUG");
يمكنك أيضًا استخدام العبارة التالية لمسح معلومات السجل في أي وقت:
ss_log_reset();
4. وظيفة اختبار السرعة
لتحسين الكود، نحتاج إلى طريقة يمكنها اختبار وقت تشغيل الكود لتحديد الكود الأمثل. يمكن للوظيفة التالية اختبار الوقت اللازم لتشغيل الكود:
الوظيفة ss_timing_start ($name = default) {
عالمي $ss_timing_start_times;
$ss_timing_start_times[$name] = انفجار(، microtime());
}
الدالة ss_timing_stop ($name = default) {
عالمي $ss_timing_stop_times;
$ss_timing_stop_times[$name] = Explode(, microtime());
}
الدالة ss_timing_current ($name = default) {
عالمي $ss_timing_start_times، $ss_timing_stop_times؛
إذا (!isset($ss_timing_start_times[$name])) {
العودة 0؛
}
إذا (!isset($ss_timing_stop_times[$name])) {
$stop_time = Explosion(, microtime());
}
آخر {
$stop_time = $ss_timing_stop_times[$name];
}
$current = $stop_time[1] - $ss_timing_start_times[$name][1];
$current += $stop_time[0] - $ss_timing_start_times[$name][0];
إرجاع $ الحالي؛
}
يمكننا الآن التحقق بسهولة من وقت تنفيذ أي جزء من التعليمات البرمجية، كما يمكننا أيضًا استخدام مؤقتات متعددة في نفس الوقت، ونحتاج فقط إلى تعيين معلمات مختلفة كاسم للمؤقت عند استخدام الوظائف المذكورة أعلاه.
5. تصحيح أخطاء عمليات قاعدة البيانات وتحسينها
بالنسبة لقواعد البيانات، تعد سرعة التشغيل أمرًا بالغ الأهمية. على الرغم من أن العديد من الكتب والمقالات تعلم أساليب تشغيل قواعد البيانات بسرعة، إلا أنه يجب اختبار جميع الأساليب عمليًا. بعد ذلك، سنقوم بدمج وظيفة query() في مكتبة وظائف PHPLib والوظائف المقدمة أعلاه لكتابة وظيفة query() جديدة، مقارنة بالوظيفة الأصلية، تضيف هذه الوظيفة وظيفة مراقبة وقت التشغيل.
استعلام الوظيفة($Query_String، $halt_on_error = 1) {
$this->connect();
ss_timing_start();
$this->Query_ID = @mysql_query($Query_String,$this->Link_ID);
ss_timing_stop();
ss_log(INFO, ss_timing_current().Secs - .$Query_String);
$هذا->صف = 0;
$this->Errno =mysql_errno();
$this->خطأ =mysql_error();
إذا ($halt_on_error && !$this->Query_ID) {
$this->halt("SQL غير صالح: ".$Query_String);
}
إرجاع $this->Query_ID;
}
2. كتابة كود جميل
1. افصل برنامج الواجهة الخلفية عن برنامج الواجهة الأمامية،
عند كتابة برنامج PHP، يتم استخدام بعض الرموز لمعالجة بعض المعاملات، مثل تشغيل قواعد البيانات وإجراء العمليات الحسابية وما إلى ذلك، بينما البعض الآخر الرموز مخصصة فقط لمعالجة المعاملات، ويتم عرض النتائج، مثل بعض أكواد PHP التي تستخدم بيان الصدى لعرض النتائج بتنسيق HTML على متصفح الويب وأكواد HTML المضمنة مباشرة في برنامج PHP. أولًا، يجب أن نميز بوضوح بين هذين النوعين من التعليمات البرمجية، حيث نطلق على الأول برنامج الخلفية والأخير برنامج الواجهة الأمامية.
نظرًا لأن PHP هي لغة برمجة مضمنة، أي أنه يمكن تضمين جميع أكواد PHP في كود HTML، مما يوفر العديد من وسائل الراحة لكتابة البرنامج. ومع ذلك، إذا ذهبت الأمور إلى أقصى الحدود، فيجب عكسها. إذا قمت بخلط كود PHP ورمز HTML في برنامج طويل، فسوف يجعل البرنامج فوضويًا وغير مناسب لصيانة البرنامج وقراءته. لذلك، نحتاج إلى زرع كود PHP المختلط في كود HTML في هذه البرامج قدر الإمكان، وتغليف هذه الأكواد في وظائف في ملفات خاصة، ثم استخدام عبارة التضمين في كود HTML لتضمين هذه الملفات في الموقع المناسب. فقط اتصل بهذه الوظائف.
من ناحية، يجعل هذا الأسلوب كلاً من كود HTML ورمز PHP بسيطًا وسهل القراءة. ومن ناحية أخرى، نظرًا لأن كود HTML يحتاج إلى التحديث باستمرار، فإن طريقة الفصل هذه يمكن أن تضمن عدم تدمير برنامج الخلفية .
على عكس برامج الواجهة الأمامية، تسعى برامج الواجهة الخلفية إلى تحقيق الاستقرار والبنية ونادرًا ما تتغير، لذا يجب تصميمها وإدارتها بعناية. في الواقع، من المفيد استثمار الكثير من الوقت عند تصميم برامج سطح المكتب "ازرع الأشجار الآن واستمتع بالظل لاحقًا." ستتمكن بسهولة من استخدام برامج الخلفية التي تكتبها الآن في أعمال التصميم المستقبلية.
2. الاستخدام المرن لملفات التضمين
كما ذكرنا سابقًا، يجب ترتيب برامج الخلفية في سلسلة من ملفات التضمين. يمكن تحميل الملفات المضمنة ديناميكيًا عند الحاجة من خلال عبارة التضمين، أو يمكن تحميلها تلقائيًا مقدمًا باستخدام التوجيه auto_prepend_file في ملف php.ini.
إذا استخدمت الطريقة الأخيرة، على الرغم من أنك ستحصل على فوائدها مرة واحدة وإلى الأبد، إلا أن هناك أيضًا بعض أوجه القصور التي تستحق اهتمامنا. يوضح لنا الجزء التالي من التعليمات البرمجية المدة التي يستغرقها تحليل ملف تضمين كبير:
require(timing.inc);
ss_timing_start();
تشمل(test.inc);
ss_timing_stop();
صدى
.ss_timing_current().
?>
في الكود أعلاه، test.inc عبارة عن ملف تضمين مكون من 1000 سطر. تظهر نتائج التشغيل أن تحليل ملف التضمين هذا يستغرق 0.6 ثانية.
عيب آخر لاستخدام ملفات التضمين هو أنه في حالة حدوث خطأ في عبارة في ملف، فلن يتمكن برنامج PHP الخاص بموقع الويب بأكمله من العمل. لذا استخدمه بحذر شديد.
في الواقع، مع القليل من معالجة ملف التضمين، يمكن تحليل ملف التضمين فقط عند الحاجة. يؤدي التعليمة البرمجية التالية إلى تحليل ملف abc.inc فقط عندما يحتاج البرنامج إليه:
if (define(__LIBA_INC)) return;
تعريف(__LIBA_INC, 1);
/*
* شفرة...
*/
?>
3. استخدم طريقة البرمجة الشيئية
PHP هي أيضًا لغة موجهة للكائنات. طريقة البرمجة الشيئية هي طريقة تصميم برمجية تحظى باحترام كبير من قبل المبرمجين المتميزين في برمجة PHP، ويمكن الاستفادة من مزايا اللغة الشيئية بشكل كامل الميزة هي تغليف الكائنات في البرمجة. في التعليمات البرمجية السابقة، استخدمنا طريقة موجهة للكائنات، على سبيل المثال، عند إدارة قاعدة البيانات، قمنا بتغليف وظيفة query() في فئة قاعدة البيانات، مما سهل بشكل كبير إدارة التعليمات البرمجية وزيادة إمكانية قراءة البرنامج.
3. متابعة سرعة البرنامج بدلاً من سرعة البرمجة
في إنشاء موقع الويب، تعد سرعة تشغيل البرنامج وسرعة تنزيل صفحة الويب من العوامل المهمة التي تحدد النجاح أو الفشل. باعتبارك مبرمج ويب، يجب عليك إيلاء المزيد من الاهتمام لسرعة تشغيل التعليمات البرمجية الخاصة بك. تعمل العديد من الطرق المقدمة أدناه على تحسين سرعة تشغيل الكود بدرجات متفاوتة.
1. استخدم تعليمات HTML البرمجية المضمنة بدلاً من بيان صدى PHP.
نظرًا لأن PHP هي لغة برمجة ويب مضمنة، فيمكن تضمين كود HTML ورمز PHP في بعضهما البعض. ومع ذلك، يشعر العديد من المبرمجين بالقلق من أن الاستخدام المفرط لـ "" لتضمين كود PHP في كود HTML سوف يستدعي مترجم PHP عدة مرات، وبالتالي يقلل من سرعة تشغيل كود PHP. لذلك، يفضلون استخدام بيان صدى PHP لإخراج كود HTML بدلاً من ذلك استخدم كود HTML مباشرة. ولكن الحقيقة هي العكس تماما. تستدعي كل صفحة PHP مترجم PHP مرة واحدة فقط لتفسير جميع أكواد PHP، لذلك، فإن تضمين أكواد PHP فقط عند الحاجة، وفي معظم الأحيان باستخدام أكواد HTML مباشرة لإدخال النتائج، لن يؤدي فقط إلى تقليل سرعة تشغيل البرنامج، بل أيضًا. أيضًا نظرًا لتقليل تحليل عبارات الصدى، يمكن غالبًا تحسين سرعة تشغيل التعليمات البرمجية.
يوضح الجزء التالي من التعليمات البرمجية استنتاجنا. في هذا الكود، نستخدم وظيفة اختبار الوقت التي تم تقديمها مسبقًا.
استخدم str-replace بدلاً من ereg-replace
المبرمجون الذين اعتادوا على البرمجة بلغة Perl هم أكثر استعدادًا لاستخدام ereg_replace لإكمال عمل استبدال السلسلة، لأن استخدام ereg_replace في PHP يشبه استخدام مطابقة الأنماط في Perl. ومع ذلك، تثبت التعليمات البرمجية التالية أن استخدام str_replace بدلاً من ereg_replace سيؤدي إلى تحسين سرعة تشغيل التعليمات البرمجية بشكل كبير.
اختبر سرعة تشغيل str_replace و ereg_replace
// يختبر هذا الرمز سرعة تشغيل str_replace
التأكيد؟>
لـ ($i=0; $i<1000; $i++) {
str_replace(i>, b>, $string).
}
?>
// يختبر هذا الكود سرعة تشغيل ereg_replace
لـ ($i=0; $i<1000; $i++) {
ereg_replace(<([/]*)i>, <1b>, $string).
}
?>
// طباعة نتيجة
النتيجة
باستخدام وقت str_replace -
وقت استخدام ereg_pattern -
تشغيل الكود أعلاه، والنتيجة هي:
وقت استخدام str_replace - 0.089757
وقت استخدام ereg_pattern - 0.248881
من نتائج التشغيل، يمكننا أن نرى أن استخدام str_replace بدلاً من ereg_replace كوظيفة استبدال السلسلة يحسن بشكل كبير سرعة تشغيل الكود.
3. انتبه إلى اقتباسات السلاسل.
PHP، مثل العديد من لغات البرمجة الأخرى، يمكنها استخدام علامات الاقتباس المزدوجة ("") لاقتباس السلاسل، أو علامات الاقتباس المفردة (). لكن في PHP، إذا كنت تستخدم علامات الاقتباس المزدوجة لاقتباس سلسلة، فسيقوم محلل PHP أولاً بتحليل ما إذا كان هناك مرجع لمتغير في السلسلة. إذا كان هناك متغير، فسوف يحل محل المتغير. إذا كانت علامات الاقتباس مفردة، فهي ليست معقدة للغاية - يتم عرض جميع السلاسل المضمنة في علامات الاقتباس المفردة مباشرة. من الواضح أنه في برمجة PHP، يكون استخدام علامات الاقتباس المفردة لاقتباس متغيرات السلسلة أسرع من استخدام علامات الاقتباس المزدوجة.
4. تجنب استخدام العمليات المشتركة في قاعدة البيانات.
بالمقارنة مع لغات برمجة الويب الأخرى، فإن وظيفة قاعدة بيانات PHP قوية جدًا. ومع ذلك، فإن تشغيل قاعدة البيانات بلغة PHP لا يزال يستغرق وقتًا طويلاً للغاية ويتطلب عمالة مكثفة، لذلك، كمبرمج ويب، يجب عليك تقليل عمليات الاستعلام عن قاعدة البيانات وإنشاء فهارس مناسبة لقاعدة البيانات. شيء آخر جدير بالملاحظة هو أنه عند استخدام PHP لتشغيل قاعدة بيانات، حاول عدم استخدام العمليات المشتركة لجداول بيانات متعددة. على الرغم من أن العمليات المشتركة يمكن أن تعزز وظيفة الاستعلام لقاعدة البيانات، إلا أنها تزيد العبء على الخادم بشكل كبير.
لتوضيح هذه المشكلة، يمكننا أن ننظر إلى المثال البسيط أدناه.
لقد أنشأنا جدولي بيانات foo و big_foo في قاعدة البيانات. يوجد في جدول البيانات foo حقل واحد فقط يحتوي على جميع الأعداد الطبيعية من 1 إلى 1000. يحتوي جدول البيانات big_foo أيضًا على حقل واحد فقط، ولكنه يحتوي على جميع الأعداد الطبيعية من 1 إلى 1,000,000. لذا، من حيث الحجم، فإن big_foo يساوي foo مدمجًا مع نفسه.
$db->query("select * from foo");
0.032273 ثانية
$db->next_record();
0.0004899999999999 ثانية
$db->query("أدخل في قيم foo (NULL)");
0.019506 ثانية
$db->query("select * from foo as a, foo as b");
17.280596 ثانية
$db->query("select * from foo as a, foo as b Where a.id > b.id");
14.645251 ثانية
$db->query("select * from foo as a, foo as b Where a.id = b.id");
0.041269 ثانية
$db->query("select * from big_foo");
25.393672 ثانية
من نتائج العملية المذكورة أعلاه، يمكننا أن نجد أن سرعة ربط جدولي بيانات يحتويان على 1000 سجل ليست أسرع بكثير من العملية المنفصلة لجدول بيانات كبير يحتوي على 1000000 سجل.
5. انتبه إلى الفرق بين include و require
في برمجة PHP، فإن include() و require() لهما نفس الوظائف، ولكن هناك بعض الاختلافات في الاستخدام واحد غير مشروط. على سبيل المثال، في المثال التالي، إذا كان المتغير $somgthing صحيحًا، فسيتم تضمين الملف somefile:
if($something){
تشمل("somefile");
}
ولكن بغض النظر عن القيمة التي يأخذها $something، فإن التعليمة البرمجية التالية ستتضمن الملف somefile في الملف:
if($something){
تتطلب("somefile");
}
يوضح المثال التالي المثير الفرق بين هاتين الوظيفتين.
$i = 1;
بينما ($i < 3) {
تتطلب ("somefile.$i")؛
$i++;
}
في هذا الكود، سيتضمن البرنامج نفس الملف في كل مرة يتكرر فيها. من الواضح أن هذه ليست النية الأصلية للمبرمج، فمن خلال الكود يمكننا أن نرى أن هذا الكود يأمل في تضمين ملفات مختلفة في كل حلقة. إذا كنت تريد إكمال هذه الوظيفة، فيجب عليك اللجوء إلى وظيفة include():
$i = 1;
بينما ($i < 3) {
include("somefile.$i");
$i++;
}
6. انتبه إلى الفرق بين الصدى والطباعة.
وظائف الصدى والطباعة في PHP هي نفسها بشكل أساسي، ولكن هناك اختلافات طفيفة بين الاثنين. يمكنك استخدام print كدالة عادية في كود PHP، على سبيل المثال، بعد تنفيذ الكود التالي، ستكون قيمة المتغير $res 1.
$ret = print "Hello World";
هذا يعني أنه يمكن استخدام الطباعة في بعض التعبيرات المعقدة، لكن لا يمكن استخدام الصدى. وبالمثل، تعمل عبارة الارتداد بشكل أسرع قليلاً من عبارة الطباعة في التعليمات البرمجية لأن عبارة الارتداد لا تتطلب إرجاع أي قيمة.