рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ -
рдЬреЗрдкреАрдПрдЪрдкреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ ред рдпрд╣ JIT рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде JavaVM рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ PHP рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдореИрдВрдиреЗ рдЕрдХреНрдЯреВрдмрд░ 2013 рдореЗрдВ рдЕрдХреЗрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ 4 рдорд╣реАрдиреЗ рдореЗрдВ рдореИрдВрдиреЗ JVM рдмрд╛рдпрдЯреЗрдХреЛрдб рдореЗрдВ php рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред PHP 5.3 рдХреЗ рд╕реНрддрд░ рдкрд░ рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, PHP 5.4 рдФрд░ 5.5 рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдкрдиреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ JRuby рдФрд░ Jython рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯреА рдкреНрд░рд╕реНрддреБрддрд┐ рддреИрдпрд╛рд░ рдХреА рд╣реИ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдЧреА рдФрд░ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рджреЗрдЧреА:
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рд╕рдм рдХреБрдЫ рдлрд┐рдЯ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЧрдиреНрджрд╛ рдирд╣реАрдВ рдерд╛ред
- рд▓рд╛рдЗрд╕реЗрдВрд╕: рдЕрдкрд╛рдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ 2.0
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрдерд▓: j-php.net
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕реНрд░реЛрдд: https://github.com/jphp-compiler/jphp
- рд╕рдВрдЧрддрддрд╛: JavaVM 1.6+ (рд▓рд┐рдирдХреНрд╕, рд╡рд┐рдВрдбреЛрдЬ, рдореИрдХрдУрдПрд╕, рдЬрд╣рд╛рдВ рднреА рдЬрд╛рд╡рд╛ рд╣реИ) рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд▓рдХреНрд╖реНрдп
JPHP Zend PHP рдпрд╛ Facebook HHVM рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ CURL, PRCE, PDO, рдЖрджрд┐ рдЬреИрд╕реЗ рд╕рднреА рд░рдирдЯрд╛рдЗрдо zend php рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдереАред рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереЗ:
- рдпрд╣ рдПрдХ рдкреНрд░рдпреЛрдЧ рдерд╛
- PHP рдореЗрдВ рдЬрд╛рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- JIT + JVM рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдПрдБ
- рдЕрд╕рдВрдЧрдд рдФрд░ рдмрджрд╕реВрд░рдд Zend PHP рд░рдирдЯрд╛рдЗрдо рдХреЛ рдХреБрдЫ рдЕрдзрд┐рдХ рд╕рднреНрдп рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ
- PHP рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рди рдХреЗрд╡рд▓ рд╡реЗрдм рдХреЗ рд▓рд┐рдП
- рдпреВрдирд┐рдХреЛрдб рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг
рдкреВрд░реА рднрд╛рд╖рд╛ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ
рдПрдПрд╕рдЯреАрдПрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдпрдЯреЗрдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рдЬреЗрд╡реАрдПрдо рднрд╛рд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЧреНрд░реВрд╡реАред рдЧреНрд░реИрдбрд▓ рдХреЛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред
рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ jvm рднрд╛рд╖рд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрдкрдиреЗ рд╡реАрдПрдо рдХреЛ рдЬреЗрдЖрдИрдЯреА рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдФрд░ рдХреНрд▓рд╛рд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИ, рдЖрдкрдХреЛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд┐рд░рджрд░реНрдж рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬреЗрд╡реАрдПрдо рдмрд╛рдпрдЯреЗрдХреЛрдб рдЦреБрдж рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдИ рдиреБрдХрд╕рд╛рди рдереЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрд╡рдпрдВ php рднрд╛рд╖рд╛ рдХреЗ рдЬрд╛рджреВ рдХреЗ рдХрд╛рд░рдг рдереЗред
JIT рдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ 1-10 рдЧреБрдирд╛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдкрд░ рдФрд╕рддрди 1.5-3 рдЧреБрдирд╛ред рдореИрдВрдиреЗ рдПрдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬреЛ рдХреЛрдб рдХреЛ рдФрд░ рднреА рддреЗрдЬрд╝ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
PHP рд╕рдВрдЧрддрддрд╛?
рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╕рдВрдЧрддрддрд╛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВред рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕рдВрдЧрддрддрд╛ рдХреЗ рд╕рд╛рде рд╕рднреА PHP рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рднрд╛рд╖рд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рд╕реНрдкреНрд▓ рдСрдЯреЛрд▓рдбрд┐рдВрдЧ, рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди, ob_ * рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреИрд╕реА рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛,
<? ... ?>
<? ... ?>
рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫред
JPHP рдореВрд▓ Zend PHP рд╕реЗ рд▓рдЧрднрдЧ 300+ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ OOP, рдлрд╝рдВрдХреНрд╢рди, рдСрдкрд░реЗрдЯрд░ рдЖрджрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдкрд░реАрдХреНрд╖рдг рднреА рд╣реИрдВред рдЗрд╕рд╕реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред рдЖрдЧреЗ рдореИрдВ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рджреВрдВрдЧрд╛ рдЬреЛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ:
- PHP 5.3 рдкрд░ рднрд╛рд╖рд╛ (рдЧреЛрдЯреЛ рдХреЛ рдЫреЛрдбрд╝рдХрд░)
- рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд┐рдВрдЧ (5.4)
- рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдШреБ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ (5.4)
Class::{expr}(), (new Foo)->bar()
(5.4)- рдХреЛрд╢рд┐рд╢ рдХрд░реЛ ... рдЖрдЦрд┐рд░рдХрд╛рд░ (5.5)
- рдРрд░реЗ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ dereferencing (5.5)
- рд╕рдорд╛рд░реЛрд╣ рд╕рд░рдгреА dereferencing рдлреВ () [0] (5.4)
- рдХрдХреНрд╖рд╛ рдХрд╛ рдирд╛рдо рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП
class
рдкреНрд░рдгрд╛рд▓реА рд╕реНрдерд┐рд░ (5.5)
рд░рд╛рд╕реНрддреЗ рдкрд░ php 5.4 рд╕реЗ рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
JIT рдФрд░ рдкреНрд░рджрд░реНрд╢рди
рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдпрджрд┐ рдЖрдк Facebook HHVM рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реИред PHP рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдЪрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд╛рди рд╣реИ, рдЪрд░ рдХрд╛ рдЬрд╛рджреВ, рдмрд╕ рдЬрд╛рджреВ рдЬрдм рдЖрдк рд░рди рд╕рдордп рдореЗрдВ рдирд╛рдо рд╕реЗ рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, JPHP рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬрд╣рд╛рдВ рдЪрд░ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИ, рд╕рдВрдХрд▓рдХ рдЪрд░ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░, рдХреНрд░рдо рдореЗрдВ, рддреБрд░рдВрдд рдЙрдиреНрд╣реЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ:
$var = 'foobar'; $x = 'var'; ${$x} = 'chanched';
$global_var = 100500; include 'file.php';
function foobar() { $x = 100500; $var = get_defined_vars();
рдЗрд╕рд▓рд┐рдП, рдЬрдм рд░рди рдЯрд╛рдЗрдо рдореЗрдВ рдирд╛рдо рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ JPHP рд╡реИрд░рд┐рдПрдмрд▓ рдирд╛рдореЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рддреБрд░рдВрдд рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рд╕реЗрд╡ рдФрд░ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЪрд░ рдХрд╛ рдЬрд╛рджреВ JPHP рдореЗрдВ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рд▓рдЧрднрдЧ 2 рдЧреБрдирд╛ рдзреАрдорд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред Zend PHP рдореЗрдВ, рдХреЛрдб рд╕рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдиреБрдХреВрд▓рдХ
JPHP рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХрд╛рдлреА рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реВрдЪреА рд╣реИред
1. рд▓рдЧрд╛рддрд╛рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ $x = (20 + 30) . 'foobar';
2. рд╕реНрдереИрддрд┐рдХ рд╕реНрдерд┐рд░рд╛рдВрдХрдРрд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ рдЬреЛ рд╕рдВрдХрд▓рди рдХреЗ рд╕рдордп JPHP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдФрд░
define
рдорд╛рдзреНрдпрдо рд╕реЗ рдШреЛрд╖рд┐рдд рдЧрддрд┐рд╢реАрд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ
define
ред рд╕реНрдЯреЗрдЯрд┐рдХ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ
__FILE__, __DIR__, __CLASS__
, рдЬрд╛рд╡рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд┐рд░рд╛рдВрдХ, рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЛ
__FILE__, __DIR__, __CLASS__
рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рднреАрддрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрди рд╕рднреА рдХреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
include __DIR__ . '/core.php';
3. рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХрд╛рд░реНрдп рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБрдпреЗ рдРрд╕реЗ рдХрд╛рд░реНрдп рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд░рд┐рдгрд╛рдо рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИрдВ, рдпрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмрд╛рд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд╡реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
for ($i = 0; $i < 100500; $i++){ $x = cos(1) + 3;
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди cos () рдкреНрд░рдгрд╛рд▓реАрдЧрдд рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрдерд┐рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП cos (1) рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХрднреА рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред
рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди / рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реНрдерд┐рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдЬреЗрдкреАрдПрдЪрдкреА рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЧрддрд┐ рд╕реЗ рд╕реНрдерд┐рд░ рддрдХ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрд▓рдиреАрдп рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
function getVersion(){ return '1.0'; } $x = getVersion();
4. рдЕрд╕рдВрднрд╡ рд╕реНрдерд┐рддрд┐рдЕрдЧрд░ рдореЗрдВ рдпрд╛ рдЕрдЧрд░ рдЖрдк рдПрдХ рдирд┐рд░рдВрддрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдХрд┐ рд╕рднреА рдЭреВрда рд╣реИ, рд╕рдВрдХрд▓рдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджреЗрдВрдЧреЗред рдЕрдм рддрдХ, рдХреЗрд╡рд▓ рдЕрдЧрд░, рдЕрдиреНрдп рдФрд░ рдлрд╛рд░рд╕ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
if (TRACE_ENABLED){
рдХреИрд╢рд┐рдВрдЧ рдХреНрд▓рд╛рд╕реЗрд╕, рдлрд╝рдВрдХреНрд╢рдВрд╕, рдмрд╛рдпрдЯреЗрдХреЛрдб?
JPHP рдХрд╛рд░реНрдп рдореЙрдбрд▓ рдЖрдкрдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдХрд╛рд░реНрдпред рдПрдХ рдмрд╛рд░ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рд▓реЛрдбреЗрдб рдХреНрд▓рд╛рд╕ рдХрд╛ рдмрд╛рд░-рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдпрд╣ рдЖрдкрдХреЛ http рд╕рд░реНрд╡рд░, рдкреНрд░рджрд░реНрд╢рди рд░реВрдкрд░реЗрдЦрд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдкреАрдПрдЪрдкреА рдореЗрдВ рдлрд╛рд▓реНрдХрди рд╕реЗ рдиреАрдЪ рдирд╣реАрдВред рдбреЗрдЯрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ http рд╕рд░реНрд╡рд░ php рдкрд░ рд╣реА рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХрд░реВрдВрдЧрд╛ред
JPHP рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖
рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрдердХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдХреБрдЫ рд░рдирдХрд┐рдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреА рддрд░рд╣ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдкрд╛рд╕ рдХрдХреНрд╖рд╛рдУрдВ, рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЕрдкрдирд╛ рд╕реЗрдЯ рд╣реИред
- рдкрд░реНрдпрд╛рд╡рд░рдг - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг
- рд░рдирдХрд┐рдЯ рд╕реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреА рддрд░рд╣
- рд▓рдЪреАрд▓реЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рдПрдХ рдЧрд░реНрдо рдкреБрдирдГ рд▓реЛрдб рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ
- рд╡рд╛рддрд╛рд╡рд░рдг рдЖрдкрд╕ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдореИрдВ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб http рд╕рд░реНрд╡рд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред
рдХреИрд╕реЗ рдХрд░реЗрдВ рдХреЛрд╢рд┐рд╢? рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг?
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ (1.6+) рдФрд░ рдЧреНрд░реИрдбрд▓ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо (1.4+) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕реНрд░реЛрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред JetBrains IDEA рдЖрдкрдХреЛ build.gradle рд╕реЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░,
jphp-example-project
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ php рд╕реНрд░реЛрдд рд╣реИрдВред рдЬрдм рдЬрд╛рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ
bootstrap.php
рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИред рдЖрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
gradle jar
рдпрд╛ рддреБрд░рдВрдд рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдПрдВ:
gradle exampleStart
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
build/libs/
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЗрдХрдЯреНрдареА рд╣реИред
рдЬреАрдпреВрдЖрдИ? рдХрд╛рд░реНрдпрдХреНрд░рдо?
рдореИрдВрдиреЗ рд╕реНрд╡рд┐рдВрдЧ (GUI рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА) рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╡рд┐рд╕реНрддрд╛рд░ рднреА рд▓рд┐рдЦрд╛ рдерд╛ред рдпрд╣ рдЖрдкрдХреЛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо GUI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реНрд╡рд┐рдВрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдореИрдВ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдореИрдВрдиреЗ рдПрдкреА рдФрд░ рд▓реЗрдЖрдЙрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд┐рдпрд╛ред GUI рдкрд░ рдПрдХ рдЫреЛрдЯреА рд╕реА рдЦрд┐рдбрд╝рдХреА:
use php\lang\System; use php\swing\SwingUtilities; use php\swing\UIForm; use php\swing\UIDialog; use php\swing\UIButton; SwingUtilities::invokeLater(function(){ $form = new UIForm(); $form->size = [500, 500]; $form->moveToCenter(); $form->visible = true; $p = new UIButton(); $p->size = [300, 40]; $p->align = 'top'; $p->h = 30; $p->text = ''; $p->on('click', function(){ UIDialog::message('', ''); }); $form->add($p); $form->on('windowClosing', function(){ System::halt(0); }); });
HTTP рд╕рд░реНрд╡рд░ рдХреЛ рдмрд╣реБрд╕реНрддрд░реАрдп рдХрд┐рдпрд╛ рдЧрдпрд╛?
JPHP рдкрд░ рдЖрдк рдПрдХ рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб http рд╕рд░реНрд╡рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
Socket
рдФрд░
ServerSokect
, рд╕рд╛рде рд╣реА
Thread
рдереНрд░реЗрдб рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ред
use php\concurrent\ExecutorService; use php\io\IOException; use php\lang\Environment; use php\net\ServerSocket; $server = new ServerSocket(); $server->bind('localhost', 8080); $service = ExecutorService::newFixedThreadPool(5);
рдРрд╕рд╛ рд╕рд░реНрд╡рд░ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╕рд╛рдордЧреНрд░реА рджреЗрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдПрдм рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИрдВред рдореЗрд░реА рдорд╢реАрди рдкрд░ (рдЬрд╛рд╡рд╛ 7, рдЖрдИ 3, рд╡рд┐рдВрдбреЛрдЬ 7), рдРрд╕рд╛ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 4000-5000 рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ (
ab -n50000 -c100 localhost
ab -n50000 -c100 localhost
) рдФрд░ рдЧрд┐рд░рдирд╛ рдирд╣реАрдВ рд╣реИред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдореИрдВ рдЦреБрдж рдХреЛ JPHP рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕реЗ рд░рд┐рд▓реАрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, PHP 5.5 рдореЗрдВ рд╕рднреА рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ (рдЬреЗрдмреНрд░реБ рдХреЗ рд▓рд┐рдП рд░реЛрдмреЛрдЯреЛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдж)ред рдореИрдВ рдирд╛рдорд╕реНрдерд╛рди рдФрд░ OOP рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реВрдВ, рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ - рдзрд╛рд░рд╛рдПрдВ, рд╕реЙрдХреЗрдЯреНрд╕, рдЧреБрдИ, рдЬрд╕рдиред
рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рдмрд╛рдХреА рджреЗрдЦреЗрдВред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред