GTK + PHP рдЕрдиреБрдкреНрд░рдпреЛрдЧ

рдЫрд╡рд┐
рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди PHP рдореЗрдВ рдЖрдк рди рдХреЗрд╡рд▓ рдмрдХрд╡рд╛рд╕ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЫреЛрдЯреЗ рдЬреАрдпреВрдЖрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЫреЛрдЯрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╖рдп рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреНрд░рдорд╢рдГ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИрдВ, рдЙрдкрдХрд░рдг рдХрд╛рдлреА рдХрдЪреНрдЪреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ "рдЕрдкрдиреЗ рд▓рд┐рдП" рдпрд╛ рдкрд╛рдареНрдпрдХреНрд░рдо / рд╕реНрдирд╛рддрдХ рдереАрд╕рд┐рд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред
рдпрд╣ рд▓реЗрдЦ PHP рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг GTK + рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЬреАрдЯреАрдХреЗ + рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рдЬреЛ рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛: "рдпрд╣ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпрд╛ рдореИрдВ рдЕрдЬрдЧрд░ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ?" рдмреЗрд╢рдХ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди:
1. рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ PHP рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрдЬрдЧрд░ рд╕реАрдЦрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ GUI рдРрдк рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
2. PHP рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕, рдореИрдХреНрд╕рдУрдПрд╕) рдХреЗ рд╕рд╛рде PHP рд╣реИред

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ


рдЖрдорддреМрд░ рдкрд░, HelloWorld! рдХрд┐рд╕реА рднрд╛рд╖рд╛ рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдкреНрд░рд╕рдиреНрдирддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ рдФрд░ рдПрдХ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд▓рд┐рдЦреЗрдВрдЧреЗред

рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рджреЛ рдЪрд░рдг рд╣реИрдВ:
1. рдЧреНрд▓реЗрдб рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╡рд┐рдХрд╛рд╕
2. рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ред

рд╕реНрдерд╛рдкрдирд╛


рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрд┐рд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЧреНрд▓реЗрдб рдлрд╝рд╛рдЗрд▓ рдПрдХ xml рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реАрдзреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рд╕рд╛рджрдЧреА рджрд┐рдЦрд╛рдирд╛ рд╣реИ, рд╣рдо рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдбреНрд░реИрдЧ рдПрди рдбреАрдбреНрд░реЙрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: http://glade.gnome.org/sources.html
рд╡рд░рдирд╛:
[aptitude|yum] install glade 

PHP рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдХреЗрд╡рд▓ PHP 5.1 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдорд┐рд▓рддрд╛ рд╣реИ: http://php.net/downloads.php

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, PHP рдореЗрдВ рдХреЛрдИ GTK рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ: http://gtk.php.net/download.php
рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ: http://gtk.php.net/manual/en/tutorials.installation.php
рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП, рд╕реНрд░реЛрдд рдХреЛ рдПрд╕рд╡реАрдПрди рд╕реЗ рдЦреАрдВрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ cairo-php рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
 pecl install cairo-beta 

рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛрддрд╛ рд╣реИ: "` lt_if_append_uniq (lt_decl_varnames, ... "php-gtk рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 cat /usr/share/aclocal/ltoptions.m4 /usr/share/aclocal/ltversion.m4 /usr/share/aclocal/ltsugar.m4 /usr/share/aclocal/lt~obsolete.m4 >> aclocal.m4 

рдлрд┐рд░ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ ред/buildconf рдФрд░ ./configure

рдЗрдВрдЯрд░рдлрд╝реЗрд╕


рд╣рдо рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрдПрдВрдЧреЗ, рд╣рдо рдПрдХ рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВрдЧреЗред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм рд╕реЗ рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдПрдВ, рдЬреЛ рджреГрд╢реНрдпрдорд╛рди = рд╕рд╣реА рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдВрдбреЛ рдкрд░ рд╡рд░реНрдЯрд┐рдХрд▓ рдмреЙрдХреНрд╕ рдХреЛ рдЦреАрдВрдЪреЗрдВ рдФрд░ рдЗрд╕реЗ 3 рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред рдКрдкрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣рдо рдореЗрдиреВ рдмрд╛рд░ рдХреЛ рдордзреНрдп рдкрд╛рда рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ, рдФрд░ рдирд┐рдЪрд▓реЗ рддрд╛рд▓рд┐рдХрд╛ (4x4) рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдЯрди рдмрдирд╛рддреЗ рд╣реИрдВред
рдЕрдм рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦреЗрдВрдЧреЗред
рдкреНрд░рддреНрдпреЗрдХ рдмрдЯрди рдХреЗ рд▓рд┐рдП:
  1. рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
  2. рдЯреИрдм рд╕рд┐рдЧреНрдирд▓ рдкрд░ рдЬрд╛рдПрдВ
  3. рдлрд╝реАрд▓реНрдб рдореЗрдВ "рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛" рдмрдЯрди 0-9 рдХреЗ рд▓рд┐рдП рдПрдВрдЯрд░рд╡реИрд▓реНрдпреВ рд▓рд┐рдЦреЗрдВ, рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдмрдЯрди рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдФрд░ "рд╕реА" рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдпрд░рдХреЙрд▓ рдХрд░реЗрдВред
  4. PHP рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреМрди рд╕рд╛ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
    "0": "input0"
    ...
    "9": "рдЗрдирдкреБрдЯ 9"
    "*": "рдПрдХреНрд╢рди_рдореВрд▓"
    "/": "Action_div"
    "+": "Action_add"
    "-": "рдПрдХреНрд╢рди_рдорд┐рди"
    "=": "Action_calc"
    "C": "action_clear"

рдФрд░ рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рдлрд╝рд╛рдЗрд▓-> рдЫреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕ рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИред

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдмрдирд╛рдП рдЧрдП рдлреЙрд░реНрдо рдХреЛ рдХреЙрд▓рдЧрд░реНрд▓рдб рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, LibGlade рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВред

рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

рдПрдХ PHP рдлрд╝рд╛рдЗрд▓ "calc.php" рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
 <?php $glade = new GladeXML('calc.glade'); Gtk::main(); 

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддреА рд╣реИ, рджреВрд╕рд░реА рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рддреА рд╣реИред

рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлреЙрд░реНрдо рдХрд╛ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВ:
 php calc.php 

рдЕрдм рдЖрдкрдХреЛ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдФрд░ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдЧреНрд▓реЗрдб рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдбрд┐рдЯрд░ рдореЗрдВ рд╣рдордиреЗ рдЬреЛ рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рд╡реЗ рд╕рд╛рдзрд╛рд░рдг PHP рдХреНрд▓рд╛рд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдпрд╛ рддрд░реАрдХреЗ рд╣реИрдВред рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡рд╣ рд╡рд╕реНрддреБ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдпрд╛ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реЗрдВрдЧреЗред
рдЖрдЗрдП рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ тАЬCalcтАЭ рдЬрд┐рд╕рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдФрд░ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЗ рд╣реЛрдВрдЧреЗ:
 <?php class Calc { protected $glade; protected $firstParam = null; protected $operation = null; function __construct($glade) { $this->glade = $glade; } /*    */ protected function calculate($operation) { $secondParam = (float) $this->glade->get_widget('entry1')->get_text(); $firstParam = (float) $this->firstParam; $result = 0; switch($this->operation) { case '*': $result = $firstParam * $secondParam; break; case '/': $result = ($secondParam > 0 ? $firstParam / $secondParam : 0); break; case '+': $result = $firstParam + $secondParam; break; case '-': $result = $firstParam - $secondParam; break; } $this->glade->get_widget('entry1')->set_text($result); $this->firstParam = $result; $this->operation = null; } /*   */ public function performAction($obj) { if ($this->firstParam == null) { $this->firstParam = $this->glade->get_widget('entry1')->get_text(); $this->glade->get_widget('entry1')->set_text(''); } if ($this->operation == null) { $this->operation = str_replace( array('action_mul', 'action_add', 'action_min', 'action_div'), array('*', '+', '-', '/'), $obj->name ); $this->glade->get_widget('entry1')->set_text(''); } else { $this->calculate($obj->name); } } /*        */ public function enterValue($obj) { /*       input0..input1,   "input"    */ $this->glade->get_widget('entry1')->set_text( $this->glade->get_widget('entry1')->get_text(). str_replace('input', '', $obj->name) ); } /*   ,        */ public function clearCalc($obj) { $this->firstParam = null; $this->operation = null; $this->glade->get_widget('entry1')->set_text(''); } /*  */ public function quit() { exit; } } 

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ Calc рд╡рд░реНрдЧ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 $glade->signal_autoconnect_instance(new Calc($glade)); 

рдЦреИрд░, рдпрд╣ рд╕рдм рд╣реИред
 php calc.php 

рдЬреАрдердм рдкрд░ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдХреЛрдб: https://github.com/kooler/php-glade-example

Source: https://habr.com/ru/post/In130496/


All Articles