PHP рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдкреВрд░реА рдЪреАрдЬрд╝ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреИрд╕реЗ рдХрд░реЗрдВред


рдХреНрдпреЛрдВ PHP?

TDD рдкрд░ PHP рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд╣рдХрд░реНрдореА рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╡рд╕рд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛ рдЬреЛ рдЕрднреА-рдЕрднреА рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВ рдкрд╛ рд╕рдХрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЦреБрдж рднреА рдРрд╕рд╛ рд╣реА рдХреБрдЫ рдмрдирд╛рддрд╛ рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИрдВред "рдХреНрдпреЛрдВ рдирд╣реАрдВ?" рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдФрд░ рдЕрдм рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдХрд╛ рдирддреАрдЬрд╛ рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реВрдВред

рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ?

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





рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рдЬрд╛рдирдмреВрдЭрдХрд░ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рдлрд▓рддрд╛ рдпрд╛ рд╡рд┐рдлрд▓рддрд╛ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджреА рдЧрдИ рдереА рддрд╛рдХрд┐ "рдЕрддрд┐рд░рд┐рдХреНрдд рдкрддреНрд░" рдХреЗ рд╕рд╛рде рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╡рд┐рдЪрд▓рд┐рдд рди рдХрд░реЗрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╡рд╣ рдЕрдХреНрд╕рд░ рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ?

рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджреЛ рдСрдЯреЛрдЯреЗрд╕реНрдЯреЗрдб рдФрд░ рдХреЙрдЯреЛрдЯреЗрд╕реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реЛрддреЗ рд╣реИрдВред

autotestd рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:


cautotest (рдХрдВрд╕реЛрд▓ рдСрдЯреЛрдЯреЗрд╕реНрдЯ) - autotestd рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ - рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдмрдВрдзрди рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

autotestd

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕ рд▓рд┐рдВрдХ рд╕реЗ рдСрдЯреЛрдЯреЗрд╕реНрдЯрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЪреВрдВрдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ рдПрдХ рдбрд┐рдмреЗрдЯ-рдкреИрдХреЗрдЬ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдПрдХ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ - рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ (рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╣реИ):
#!/bin/bash apt-get install python2.6 python-sqlalchemy sqlite3 inotify-tools python-pyinotify python-dbus libnotify-bin python-notify mkdir /etc/autotestd cp config.ini /etc/autotestd/ chmod a+w /etc/autotestd mkdir /usr/share/autotestd cp ./*.py /usr/share/autotestd/ ln -s /usr/share/autotestd/autotestd.py /usr/local/bin/autotestd 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЧрдИ рд╣реИрдВ, рдлрд┐рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рдмрдирд╛рдирд╛, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛, рдФрд░ рдЕрдВрдд рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рдирд╛ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЗрд╡рд▓ sudo: sudo//install рд╕реЗ рдЪрд▓рд╛рдПрдВ
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрд╡рдпрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЕрдзрд┐рдорд╛рдирддрдГ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ): рдСрдЯреЛрдЯреЗрд╕реНтАНрдЯреЗрдб рдФрд░

(рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдореИрдВ рдСрдЯреЛрдЯреЗрд╕реНрдЯреЗрдб рдХреЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджрд╛рдирд╡ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ)

cautotest

рдЕрдм cautotest рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдПрдХ рд╕рдорд╛рди рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: sudo ./install
 #!/bin/bash apt-get install python2.6 python-dbus mkdir /usr/share/cautotest cp ./*.py /usr/share/cautotest/ ln -s /usr/share/cautotest/main.py /usr/local/bin/cautotest 


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реИред
Cautotest -h рдХрдорд╛рдВрдб рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдорджрдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рдпрд╣ рд╕рдм рд╢реБрд░реВ рд╣реЛрдиреЗ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИред рдЕрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
cautotest -a project_name/application/modules//ests


рдорд╣рддреНрд╡рдкреВрд░реНрдг! рдЖрд╡реЗрджрди рд╡рд░реНрдЧреЛрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рд╡рд░реНрдЧ рдирд╛рдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ:

 //MyClass.php class MyClass extends XXX { }; //MyClassTest.php class MyClassTest extends UnitTest { }; 


рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд╛рдордХрд░рдг рдХреЛ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ /etc/autotestd/config.ini рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдкрд░, рд╕рднреА рддреИрдпрд╛рд░реА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред

Cautotest -l ("l") рдХрдорд╛рдВрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛:
hdg700@laptop:~$ cautotest -l
Active projects:
- testp
Use '-i project_name' for more information


рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА cautotest -i testp рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
hdg700@laptop:~$ cautotest -i testp
Project: testp
Code dir: /home/hdg700/work/testproj/code/
Test dir: /home/hdg700/work/testproj/test/
Classes: 1
Tests: 1


рдЕрдм рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рд╣реЗрдЬрддреЗ рд╕рдордп, рд╕рдВрдмрдВрдзрд┐рдд рдкрд░реАрдХреНрд╖рдг рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рджреЛрдиреЛрдВ рдЖрд╡реЗрджрди Python2.6 рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред

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

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

рд╕рд┐рд╕реНрдЯрдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдкреБрдирд┐рдЯ рдХрд╣рддрд╛ рд╣реИред рдЖрдк рдХрдорд╛рдВрдб рдХреЛ рд╕рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

Sqlite3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; sqlalchemy рдХрд╛ рдЙрдкрдпреЛрдЧ sqlite рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдкрддрд╛ рдЪрд▓рд╛ рдерд╛?

  1. рдмрд╛рд╣рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдиреНрдЪ рдХрд░рдирд╛: рдпрджрд┐ рдЖрдк рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕реНрдЯрдб, рд╕реНрдЯрдбрдЖрдЙрдЯ рдФрд░ рд╕реНрдЯрдбрд░ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬрдм рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб (рдСрдЯреЛрдЯреЗрд╕реНрдЯ) рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдмрд╛рд╣рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рддрдХ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдЖрдк рдПрдлрдЬреА рдирд╣реАрдВ рд╣реЛрддреЗред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдиреЗ рдореЗрд░реА рдирд╕реЛрдВ рдХреЛ рдХрд╛рдлреА рдЫрд┐рдиреНрди-рднрд┐рдиреНрди рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рд╕рдм рдХреБрдЫ рддрд╛рд░реНрдХрд┐рдХ рд╣реЛ рдЧрдпрд╛: рдпрд╣ рд╕реНрдЯрдб, рд╕реНрдЯрдбрдЖрдЙрдЯ рдФрд░ рд╕реНрдЯреЗрдбрд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
  2. рд╕рддреНрд░-рдмрд╕ DBus рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдзреНрдпрд╛рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЙрдЯреЛрд▓реЙрдЬреА)ред рдСрдЯреЛрдЯреЗрд╕реНрдЯреЗрдб рдХреЛ рдбреЗрдореЙрди рдореЛрдб рдореЗрдВ рдбрд╛рд▓рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо-рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдкреБрдирд╢реНрдЪ

рдЖрдкрдиреЗ PHP рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛ рдФрд░ рдЧреНрд░реЗ рджрд┐рдиреЛрдВ рдХреЛ рд░реЛрд╢рди рдХрд░реЗрдЧрд╛ред :)
рдЬреЛ рд▓реЛрдЧ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рдмрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ githab рдкрд░ рдореБрджреНрджреЛрдВ рдХреЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ: рдСрдЯреЛрдЯреЗрд╕реНрдЯрдб -рдЗрд╢реНрдпреВ рдФрд░ рдХреНрдпреВрдЯреЛрдЯреЗрд╕реНрдЯ-рдЗрд╢реНрдпреВ ред

рдФрд░ рдЖрдЦрд┐рд░реА рд╡рд╛рд▓рд╛ред рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ: рдЗрд╕ рддрд░рд╣ рдЖрдк рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВрдЧреЗ, рдФрд░ рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЙрдиреНрд╣реЗрдВ (рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ) рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles