الفرق بين المراجعتين لصفحة: «PHP/errorcontrol operators»

من موسوعة حسوب
< PHP
ط استبدال النص - 'PHP/Expressions' ب'PHP/expressions'
ط استبدال النص - 'PHP\/Function\/([^|]*)' ب'PHP/$1'
سطر 2: سطر 2:
تدعم PHP عاملًا واحدًا للتحكّم بالأخطاء وهو علامة (@). تتجاهل PHP جميع الأخطاء الناتجة من أي تعبير تُلحق به هذه العلامة.
تدعم PHP عاملًا واحدًا للتحكّم بالأخطاء وهو علامة (@). تتجاهل PHP جميع الأخطاء الناتجة من أي تعبير تُلحق به هذه العلامة.


إن كنت قد عينت دالة خاصة للتعامل مع الأخطاء باستخدام [[PHP/Function/set-error-handler|<code>set_error_handler()</code>‎]] فستستدعى تلك الدالة حتى مع استخدام هذا العامل، ولكن يمكن للدالة الخاصة (بل ويجدر بها) أن تستدعي الدالة <code>[[PHP/Function/error-reporting|error_reporting()‎]]</code> والتي ستعيد 0 عندما يكون الاستدعاء المتسبب في حدوث الخطأ مسبوقًا بعلامة @.
إن كنت قد عينت دالة خاصة للتعامل مع الأخطاء باستخدام [[PHP/set-error-handler|<code>set_error_handler()</code>‎]] فستستدعى تلك الدالة حتى مع استخدام هذا العامل، ولكن يمكن للدالة الخاصة (بل ويجدر بها) أن تستدعي الدالة <code>[[PHP/error-reporting|error_reporting()‎]]</code> والتي ستعيد 0 عندما يكون الاستدعاء المتسبب في حدوث الخطأ مسبوقًا بعلامة @.


إن كانت الخاصية <code>track_errors</code> مفعّلة فإن أيّ رسالة خطأ تنشأ من التعبير ستحفظ في المتغير <code>‎$php_errormsg</code>، وتعاد كتابة هذا المتغير مع كل خطأ، لذا تفحص قيمته في البداية إن كنت ترغب في استخدامه.
إن كانت الخاصية <code>track_errors</code> مفعّلة فإن أيّ رسالة خطأ تنشأ من التعبير ستحفظ في المتغير <code>‎$php_errormsg</code>، وتعاد كتابة هذا المتغير مع كل خطأ، لذا تفحص قيمته في البداية إن كنت ترغب في استخدامه.
سطر 22: سطر 22:
</syntaxhighlight>
</syntaxhighlight>


ملاحظة: يعمل العامل @ مع [[PHP/expressions|التعابير]] فقط. وكقاعدة بسيطة: إن كان بالإمكان أخذ قيمة شيء ما، فيمكن حينئذ إلحاق العامل @ به. على سبيل المثال يمكن إلحاق العامل بالمتغيرات والدوال واستدعاءات التضمين <code>[[PHP/Function/include|include]]</code>، والثوابت وما إلى ذلك. ولا يمكن إلحاقه بتعريفات الدوال والأصناف، أو البنى الشرطية مثل <code>[[PHP/if|if]]</code> و <code>[[PHP/foreach|foreach]]</code> وما إلى ذلك.
ملاحظة: يعمل العامل @ مع [[PHP/expressions|التعابير]] فقط. وكقاعدة بسيطة: إن كان بالإمكان أخذ قيمة شيء ما، فيمكن حينئذ إلحاق العامل @ به. على سبيل المثال يمكن إلحاق العامل بالمتغيرات والدوال واستدعاءات التضمين <code>[[PHP/include|include]]</code>، والثوابت وما إلى ذلك. ولا يمكن إلحاقه بتعريفات الدوال والأصناف، أو البنى الشرطية مثل <code>[[PHP/if|if]]</code> و <code>[[PHP/foreach|foreach]]</code> وما إلى ذلك.


انظر كذلك إلى صفحة <code>[[PHP/Function/error-reporting|error_reporting()‎]]</code> والقسم الخاص [[PHP/Error|بمعالجة الأخطاء ودوال التسجيل]] في هذا الدليل.
انظر كذلك إلى صفحة <code>[[PHP/error-reporting|error_reporting()‎]]</code> والقسم الخاص [[PHP/Error|بمعالجة الأخطاء ودوال التسجيل]] في هذا الدليل.


تحذير: سيعطّل عامل التحكم بالأخطاء "@" الإبلاغ عن الأخطاء الخطرة والتي تؤدي إلى إيقاف تنفيذ الشيفرة. سيؤدي ذلك إلى حدوث أمور عدة منها أنّه إن استخدم العامل "@" لإخفاء الأخطاء من دالة معينة وكانت الدالة غير متوفّرة أو كان هناك خطأ في كتابتها، فإن الشيفرة ستتوقف عن التنفيذ دون وجود أي دليل على سبب التوقف.
تحذير: سيعطّل عامل التحكم بالأخطاء "@" الإبلاغ عن الأخطاء الخطرة والتي تؤدي إلى إيقاف تنفيذ الشيفرة. سيؤدي ذلك إلى حدوث أمور عدة منها أنّه إن استخدم العامل "@" لإخفاء الأخطاء من دالة معينة وكانت الدالة غير متوفّرة أو كان هناك خطأ في كتابتها، فإن الشيفرة ستتوقف عن التنفيذ دون وجود أي دليل على سبب التوقف.

مراجعة 03:43، 4 أبريل 2018

تدعم PHP عاملًا واحدًا للتحكّم بالأخطاء وهو علامة (@). تتجاهل PHP جميع الأخطاء الناتجة من أي تعبير تُلحق به هذه العلامة.

إن كنت قد عينت دالة خاصة للتعامل مع الأخطاء باستخدام set_error_handler() فستستدعى تلك الدالة حتى مع استخدام هذا العامل، ولكن يمكن للدالة الخاصة (بل ويجدر بها) أن تستدعي الدالة error_reporting()‎ والتي ستعيد 0 عندما يكون الاستدعاء المتسبب في حدوث الخطأ مسبوقًا بعلامة @.

إن كانت الخاصية track_errors مفعّلة فإن أيّ رسالة خطأ تنشأ من التعبير ستحفظ في المتغير ‎$php_errormsg، وتعاد كتابة هذا المتغير مع كل خطأ، لذا تفحص قيمته في البداية إن كنت ترغب في استخدامه.

<?php

// خطأ مقصود في الملف

$my_file = @file ('non_existent_file') or
    die ("Failed opening file: error was '$php_errormsg'");

// يعمل هذا مع أي تعبير، وليس مع الدوال فقط:
$value = @$cache[$key];
// لن تنطلق ملاحظة إن كان الفهرس $key غير موجودٍ.

?>

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

انظر كذلك إلى صفحة error_reporting()‎ والقسم الخاص بمعالجة الأخطاء ودوال التسجيل في هذا الدليل.

تحذير: سيعطّل عامل التحكم بالأخطاء "@" الإبلاغ عن الأخطاء الخطرة والتي تؤدي إلى إيقاف تنفيذ الشيفرة. سيؤدي ذلك إلى حدوث أمور عدة منها أنّه إن استخدم العامل "@" لإخفاء الأخطاء من دالة معينة وكانت الدالة غير متوفّرة أو كان هناك خطأ في كتابتها، فإن الشيفرة ستتوقف عن التنفيذ دون وجود أي دليل على سبب التوقف.

مصادر