الأحداث والصياد

الأحداث والصياد "زناد وتنصت"

الأمر هنا وكأننا نصطاد , فلدينا زناد ومستمع للطلقه أو الحدث
قبل كل هذا لنرى مايحدث فعليا ... هناك مساعد للصياد يمتلك أداوت مثل الشبكه أو كلب صيد وهذا الصياد ينتظر الزناد وذلك بالإستماع إلى صوت الطلقه , عند إطلاق الرصاصه يقوم المساعد بتنفيذ أمر إطلاق كلب الصيد أو تهيئة الشباك
هذا مايحدث فعليا في هذه المرحله , فهناك صياد trigger ولدينا أيضا مستمع للزناد وهو عباره عن داله لتنفيذ الأوامر listen
الأحداث أو الزناد مثل الحصول على مخرجات التطبيق وقبل عرضها يتم عمل حدث لتتمكن من خلال المتنصت من عمل فلترة لهذه المخرجات , أيضا هناك مثال آخر , عند تخزين مدخلات في قاعدة البيانات هنا نحتاج إلى حدث لنتمكن من معرفة المعرف الخاص بهذه المدخلات ويمكن أن نحتاج إلى المدخلات قبل إدخالها لقاعدة البيانات حتى نتمكن من فلترة بعضها مثلا
هناك الكثير من الأمثله تستوجب مثل هذه التقنيه لجعل النظام الخاص بك مرن إلى أبعد حد

» الإستخدام

إضافة مستمع , ويكون في الطبقه العليا لنظمن سماع الزناد في أي طبقه أسفلها , أي في ملفات ال init.php

//$lezaz->listen($tag,$callable,$priority);
// $tag: الحدث .
// $callable: داله لتنفيذ الأوامر
// $priority:الأولويه وهو رقم كلما كان أقل كانت أعلى 
// examples:
 $lezaz->listen('test.action.1',function(){
        echo "this is 1 ...";
});
    $lezaz->listen('test.action.1',function(){
        echo "this is 2 ...";
});
    $lezaz->listen('test.action.1',function($arg1,$arg2){
        echo "this is 3 ..."," you have passed an argument it is: ", $arg1,'|',$arg2;
});
// لتنفيذ الأوامر السابقة فقط قم بضغط الزناد عبر الأمر 
$lezaz->trigger('test.action.1',array('arg_1','arg_2'));
/*
النتيجه 
this is 1 ...
this is 2 ...
this is 3 ... you have passed an argument it is: 
arg_1|arg_2
*/


// نفس المثال السابق ولكن بأولويه معينه لكل أمر 
$lezaz->listen('test.action.1',function(){
        echo "this is 1 ...";
},5);
    $lezaz->listen('test.action.1',function(){
        echo "this is 2 ...";
},10);
    $lezaz->listen('test.action.1',function($arg1,$arg2){
        echo "this is 3 ..."," you have passed an argument it is: ", $arg1,'|',$arg2,'';
},0);

$lezaz->trigger('test.action.1',array('arg_1','arg_2'));
/*
النتيجه 
this is 3 ... you have passed an argument it is: 
arg_1|arg_2

this is 1 ...

this is 2 ...
*/


// مثال لكيفية إستخدام الفلاتر 
// إرجاع القيمة الأوليه مع أقواس 
 $lezaz->listen('test.filter.1',function($word){
return"($word)";
});

// إرجاع آخر تعديل على القيمة بين إشارتي ناقص 
    $lezaz->listen('test.filter.1',function($word, $last_filtered){
return"-$last_filtered-";
});

// إرجاع القيمة الأوليه والقيمة المعدله بين إشارتي يساوي وبتنسيق خط كبير 
    $lezaz->listen('test.filter.1',function($word, $last_filtered){
return"$word:        

=$last_filtered=

"
; }); // لنختار كلمة $myword ='test'; // الآن نمرر الكلمة على الفلاتر السابقة من خلال ضغط الزناد echo $lezaz->trigger('test.filter.1', $myword); /* النتيجه test:

=-(test)-=

*/

» أحداث مدمجه وجاهزه للإستماع

هناك أحداث كثيرة مدمجه مع النظام ويمكن أن تزداد في كل تحديث كما تحتوي بعض الإضافات على أحداث جاهزه لتتمكن من التعامل مع المخرجات وتدمج الإضافات أو أعمالك مع هذه الإضافات

// new.guset            --->  زائر جديد كليا ويمكن أن يكون بوت
// session.guset        --->  بداية جلسه لزائر حقيقي أي شخص تم التأكد منه
// requset.guset        --->  زائر يقوم بالتصفح
// layer.init.start     --->  بدء تنفيذ ملفات الطبقة الأولى 
// layer.init.done      --->  الإنتهاء من تنفيذ ملفات الطبقه الأولى 
// layer.index.start    --->  بدء تنفيذ ملفات الطبقة الثانيه 
// layer.index.done     --->  الإنتهاء من تنفيذ ملفات الطبقه الثانيه 
// layer.footer.start   --->  بدء تنفيذ ملفات الطبقة الثالثه 
// layer.footer.done    --->  الإنتهاء من تنفيذ ملفات الطبقه الثالثه 
// layer.term.start     --->  بدء تنفيذ ملفات الطبقة الرابعه 
// layer.term.done      --->  الإنتهاء من تنفيذ ملفات الطبقه الرابعه 
// output.filter        --->  فلتر المخرجات قبل الطباعه