Аргерих Л. О языке РНР. Часть 4. Страница 127


Понятие иерархии очень важно в PHP-GTK. Каждый объект в языке, в ко­нечном счете, является производным от базового класса GtkObject. Каждый объект в языке также наследует методы и единственный сигнал ('destroy'), реализованные в базовом классе GtkObject. Если в GtkObject есть поля свойств - открытые свойства класса, непосредственно доступные программисту, - каждый объект также наследует их. В дереве наследования есть несколько ветвей наследования, и некоторые графические элементы имеют до пяти предков, отделяющих их от базового класса GtkObject.

В PHP-GTK, как и в GTK+, графический элемент (widget) служит обозначе­нием любого элемента GUI, например метки, переключателя (radio button) или окна списка. Все графические элементы PHP-GTK являются производ­ными от базового класса второго уровня с именем GtkWidget. Есть только три объекта в иерархии PHP-GTK, не являющиеся производными от GtkWidget, и один из этих трех - GtkTooltips - будет участвовать в приводимом примере.

Это умный элемент, знающий свою родословную. Графические элементы PHP-GTK умеют это, в отличие от графических элементов GTK. Дело в том, что РНР обладает возможностью действительного наследования, отсутству­ющего в С. Не требуется сообщать PHP-GTK, откуда родом метод, или опре­делять родство вызывающего графического элемента с исходным классом, как требуется программисту GTK при работе с С. Это делает программирова­ние PHP-GTK значительно более интуитивным, но также способствует со­вершению ошибок из-за непонимания иерархической структуры классов GTK. По этой причине программисту PHP-GTK следует твердо помнить про­исхождение графического элемента.

Контейнер является графическим элементом, производным от базового класса третьего уровня с именем GtkContainer, который обладает свойством содержать один или более дочерних графических элементов. Примерами контейнеров служат GtkWindow, GtkTable и GtkList. За исключением того об­стоятельства, что они могут содержать в себе другие графические элементы, они точно такие же, как другие графические элементы, и потому контейнер может быть дочерним для другого контейнера.

GTK - система, построенная на событиях. Это значит, что каждая програм­ма PHP-GTK имеет главный цикл, продолжающийся в течение всего срока работы программы. Главный цикл состоит из потока событий, т. е. сообще­ний от интерфейса, относящихся к изменениям его окружения, таким как первоначальное появление графического элемента на экране, перемещения указателя мыши, нажатия клавиш.