السلام عليكم ورحمة الله وبركاته ..
بما أننا في في عالم الOpen Source , فيجب ألا نكون Open Code فقط .. بل Open Mind ..
لا تكن أنانياً فالعلم ما جعل لكي نختزنه داخل عقولنا ويموت بموتنا .. فلو نظرنا بعين بصيرة لوجدنا أنه لو تبادل وتناقش الناس الافكار مع بعضهم لخرج الطرفين بالفائدة ..
لكن عندنا لو سوا واحد شي بسييط يعني سطر ولا سطرين برمجة وما كتب عليه جميع الحقوق محفوظة وجميع أنواع القسم والحلفان عشان لا يشيل المستخدم اسمه .. ما يرتاح .. يعني لا يكفي أننا أمة مستهلكة كمان بخيلة !! .. انا لا أقصد من هذي النقطة أني أقلك لا تحط حقوقك ولا كأني احرض على مسح الحقوق لا والله .. بل أقصد أننا نحب البروز مفردين .. (عموماً اذا لم تهضم هذه النقطة أو لم تدخل لك بمزاج أنساها
) ..
نقطة أخيرة .. [ اذا لم تكن غايتك من تعلم العلم نفع الأمة والمساهمة في نهضتها .. فأرجوك راجع حساباتك ]
وأنا عارف أني مقصر كثيييير .. لكن .. هل من معين !!
========================================
وأخيراً راح أدخل في الموضوع
..
هذي الدالة جاءت فكرتها كي تختصر الوقت وبعض الأجراءات الروتينية في برنامجك
ممكن توضح أكثر ؟؟
ابشر ..
عمل هذي الدالة هو التحقق من بعض المتغيرات في برنامج .. مثلاً عندما تريد التحقق من أن هذا المتغير ليس فراغاً أي أنه لا يملك قيمة وتريد أن تطبع رسالة خطأ فهذي تختصر هذه العملية لمتغير واحد أو أكثر ..
إليك المثال ..
قبل التعامل مع الدالة كنت استخدم الطريقة هذي:
كود PHP:
<?php
if ( empty($var) ) echo 'خطأ لايمكن أن يكون المتغير هذا فارغاً';
else{
echo "مرحباً بك";
//...
}
?>
بعد استخدام الدالة :
كود PHP:
<?php
$ERROR_MSG='';
if ( !Validation($var, 'NOT_Empty', 'خطأ لايمكن أن يكون المتغير هذا فارغاً', $ERROR_MSG) ){/* اذا كنت تريد القيام بعض العمليات */ }
echo $ERROR_MSG;
?>
هذا مثال بسيط وخفيف ولكن لا يوضح أي ميزة لهذي الدالة فقط كيفية استخدامها .. ميزة هذي الدالة الاختصار
دعونا نفهم الدالة ووسائطها ..
الشكل العام للدالة
كود PHP:
bool Validation($variable, $function, $message, &$ERROR_MSG)
اذاً فهي تعيد قيمة منطقية (صح أو خطأ) أو (True | False)
والوسائط التي تسخدمها
+ $variable : المتغير الذي تريد التحقق من قيمته .
+ $function : الدالة التي تريد استخدامها لكي تتحقق من المتغير .. هناك قيمتين يمكنك أدخلها وهي =
# [ NOT_Empty ] : لكي تتحقق من أن المتغير له قيمة (كما في المثال السابق) .
# [ ... ] : اسم أي دالة خاصة تستخدمها للتحقق من المتغير (وسيأتي توضيح ذلك).
+ $message : الرسالة التي تريد عرضها اذا فشلت الدالة في التحقق أي أعادت قيمة False.
+ $ERROR_MSG : المتغير الذي سيحمل رسالة الخطأ ويجب تعريفه مسبقاً .
راح أوضح الوسيط الأخير $ERROR_MSG .. والفرق بينه وبين $message ..
القيمة المعادة من الدالة قيمة منطقية .. أي أنها لا تفرض عليك طباعة الرسالة فوراً فهذا قد يؤثر على الاسلوب الذي تتبعه في برنامجك .. البعض يستخدم القوالب واي أمر طباعة يشوه الصفحة أي أن الرسالة راح تظهر في أعلى الصفحة بدون أي تنسيق ..
لذا فضلت أن أجعل متغير لنص رسالة الخطأ ومتغير يحمل هذه الرسالة ويمكن أستخدامه في أي مكان من البرنامج ..
ومع الامثلة توضح الامور :
مثال2 : التحقق من أكثر من متغير وأنهم ليسوا فارغين .
كود PHP:
<?php
$ERROR_MSG='';
if ( !Validation(array($_POST['name'], $_POST['pass'], $_POST['email']), 'NOT_Empty', 'لم تدخل كافة البيانات', $ERROR_MSG) ){}
//دالة تطبع رسالة الخطأ بتسيق معين وتأخذ متغير الخطأ كوسيط
Print_Error($ERROR_MSG);
?>
اذاً لو لدينا نموذج لإدخال بعض البيانات .. ولم يدخل الزائر أحد البيانات أو جميعها .. فسوف تظهر له رسالة الخطأ في التنسيق الذي قمت به في الدالة Print_Error
ما قمنا به هو وضع المتغيرات التي نريد التحقق منها في مصفوفة واحدة في الوسيط الأول
مثال3 : ماذا لو أردت أن تظهر مع كل متغير رسالة خطأ خاصة
يعني اذا لم يدخل اسمه راح تظهر له رسالة خطأ كذا
واذا لم يدخل كلمة المرور راح تظهر له رسالة خطأ كذا كذا .. وغيره
فإليك التوضيح :
كود PHP:
<?php
$ERROR_MSG='';
if ( !Validation(array('لم تدخل اسمك'=>$_POST['name'], 'لم تدخل كلمة المرور'=>$_POST['pass'], 'لم تدخل بريدك'=>$_POST['email']), 'NOT_Empty', '', $ERROR_MSG) ){}
//دالة تطبع رسالة الخطأ بتسيق معين وتأخذ متغير الخطأ كوسيط
Print_Error($ERROR_MSG);
?>
الاضافة التي قمنا بها هو وضع مفتاح key لعنصر المصفوفة يحمل رسالة الخطأ الخاص التي نريد عرضها مع وضع الوسيط الثالث فارغاً !!
مثال 4 : وهو مختلف عن طريقة التحقق السابقة .. وسوف نستخدم قيمة غير 'NOT_Empty' في الوسيط الثاني
أي أننا سوف نستخدم طريقة الاستدعاء الخلفي callback .. والتي قام الاستاذ عبدالله عيد جزاه الله خيراً بشرحها بالتفصيل هنا
كود PHP:
<?php
$ERROR_MSG='';
//دالة لتحقق من صحة البريد
function Check_Email($mail)
{
if ( eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z]+(\.[a-zA-Z]{1,4})*$", $mail) ) return TRUE;
else return FALSE;
}
if ( !Validation($_POST['email'], 'Check_Email', 'الرجاء التأكد من صحة البريد', $ERROR_MSG) ){}
//دالة تطبع رسالة الخطأ بتسيق معين وتأخذ متغير الخطأ كوسيط
Print_Error($ERROR_MSG);
?>
ما هو التغيير في هذا المثال ؟؟
هو أننا استخدمنا الطريقة الاستدعاء الخلفي لدالة معرفة مسبقاً للتحقق من قيمة متغير ما
سوف نضع المتغير الذي نريد التحقق منه في الوسيط الاول
واسم الدالة مجرداً من الوسائط
والباقي كما في الامثلة السابقة
طيب لو الدالة اللي تبغى تستخدمها لها اكثر من وسيط .. فما العمل ؟؟
العمل هو أنك تضع هذه الوسائط في مصفوفة لتحمل عدد الوسائط المحددة للدالة فقط
وإلا سوف تظهر لك رسالة خطأ من مترجم البي اتش بي
مثال 5 : وهذا مثال أخير وشامل بعض الشئ لتوضيح الدالة
كود PHP:
<?php
$ERROR_MSG='';
//دالة لتحقق من صحة البريد
function Check_Email($mail)
{
if ( eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z]+(\.[a-zA-Z]{1,4})*$", $mail) ) return TRUE;
else return FALSE;
}
//دالة للتحقق من تماثل كلمتي المرور المدخلة
function Check_Passwords_Equals($pw1, $pw2)
{
if ($pw1 === $pw2) return TRUE;
else return FALSE;
}
if ( !Validation($_POST['name'], 'NOT_Empty', 'لم تدخل اسمك', $ERROR_MSG) ){}
else if ( !Validation(array($_POST['pw1'], $_POST['pw2']), 'Check_Passwords_Equals', 'الرجاء التحقق من تماثل كلمتي المرور', $ERROR_MSG) ){}
else if ( !Validation($_POST['email'], 'Check_Email', 'الرجاء التأكد من صحة البريد', $ERROR_MSG) ){}
else{
//في حالة النجاح من كل عمليات التحقق سيتم تنفيذ الامور التالي
//.....
//......
}
//دالة تطبع رسالة الخطأ بتسيق معين وتأخذ متغير الخطأ كوسيط
Print_Error($ERROR_MSG);
?>
أخيراً وليس آخراً .. أتمنى من كل قلبي أن تكون فكرة الدالة قد وصلت .. إن كانت قد وصلت فيجب عليك أن تحرك يدك بإعادة كتابتها في برامجك وحسب متطلباتك ..
واذا لم تفهم نقطة معينة .. فأنا إن شاء الله في الخدمة ..
وأكون سعيداً جداً لو تناقشنا في تطوير الدالة وبعض الأفكار المقترحة ..
أعذروني لو بدا مني أي شئ يزعل ..
تقبلوا تحياتي
اخوكم في الله .. نواف