Обработка на сигналите

Съдържание

Въведение
Сигнали
Callbacks and Signal Handlers
Connecting the two
Events
Summary

Въведение

В този урок ще разгледаме обработката на сигналите в PHP-GTK 2. Това е едно от фундаменталните неща при писане на програми при този език!

Може би сте забелязали, че в края на всяка програма написана под PHP-GTK 2 за вършваме със следният код:
Gtk::main();
Този ред означава, че цикълът е стартиран и очаква нещо да се случи. Със сигурност не бихте искали просто да създадете уйджет, да го покажете и след това да приключите с програмата. Предназначението на този цикъл е да предотврати точно това и да продължи с изпълнението на вашата програма. Съответно кодът:
Gtk::main_quit();
прекратява цикълът. Използва ме го само когато наистина искаме да излезем от нашата програма.

Нека първо да дефинираме някои термини, които ще използваме често.

  • Действие: Нещо, което се случва. Един пример: Потребителят, който натиска бутон се счита за действие.
  • Сигнал: Това е съобщението, което се генерира, когато нещо се случи. По този начин вашата програма разбира, че дадено действие се случва.
  • Обратно връщане: Функция или метод, която е стартирана от друга част на вашият програмен код.
  • Обработка на сигнала: Обратно връщане, което е отговор на полученият сигнал. Това е частта от вашата програма, която отговаря за обработка на сигнала.
  • Събитие: Това е неспиращ поток от импулси, което съобщава за промените на ниско ниво в прозореца на вашата програма.

Предназначението на Обработването на сигнал е да свърже сигналът с прилежащата му финкци, която трябва да обработи сигнала и нейното създаване. Генерирането на самият сигнал се извършва от PHP-GTK 2. Трябва да запомните, че генерирането на сигнал не винаги означава, че потребителят е извършил дадено дейстквие. Възможно е ръчно да бъде създаден сигнал, което PHP-GTK 2 прави постоянно.

Пример за такъв вътрешно генериран сигнал се използва когато GtkAdjustment излъчи "value-changed", за да може да се използва от GtkProgressBar. За някой от сигналите има вътрешни функции, които ще бъдат изпълнени независимо дали ще ги свържете или не.

В повечето случаи обаче е необходимо ръчно да свържете сигналът с функцията обработваща сигнала.

DIVOTO web & net