
- рдФрдЬрд╛рд░реЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ред
helloWorld()
рдореЗрдВ helloWorld()
рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред- рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди C рдХреЛрдб рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╕реА рдХреЛ рдЫреВрдиреЗ рдХреЗ рдмрд┐рдирд╛ PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреЗ / рдПрди рдкрд░ред
рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдЬреЛ рдХреЛрдИ рднреА рдкрдврд╝рддрд╛ рд╣реИ рд╡рд╣ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ -
рдЧрд┐рддреБрдм рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ
рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореИрдВ рдХреЛрдЯрд▓рд┐рди рдиреЗрдЯрд┐рд╡ рд╕реНрд▓реИрдХ рдЪреИрдирд▓ рдореЗрдВ, рдХрднреА-рдХрднреА рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдФрд░ рднреЛрд▓реЗ-рднрд╛рд▓реЗ рдореЗрд░реЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рддреНрд╡рд░рд┐рдд рдФрд░ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдирд┐рдХреЛрд▓рд╛рдИ рдЗрдЧреЛрдЯреА рдХреЛ рдПрдХ рдмрдбрд╝рд╛ рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВредрддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдореИрдВ рдПрдХ рдкреВрд░реНрдг рд░реВрдкрд░реЗрдЦрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ (рд╢рд╛рдпрдж рдмрд╛рдж рдореЗрдВ), рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░реЗрдВрдЧреЗ:
- рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдирд╛ рдЬреЛ PHP рдХреЛрдб рд╕реЗ рдХреЙрд▓ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ред
- рд╣рдо рдХреЗрд╡рд▓ рд╕рд░рд▓ PHP рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:
string
, boolean
, int
, float
(рдФрд░ null
)ред рдХреЛрдИ рд╕рд░рдгрд┐рдпрд╛рдБ, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рд╕рдВрд╕рд╛рдзрди, рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг, рдЖрджрд┐ред - рдореИрдВ рдЖрдкрдХреЛ рдиреАрдЪреЗ рдмрддрд╛рдКрдВрдЧрд╛ред
PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛрдб рдФрд░
zend engine
рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдореИрдХреНрд░реЛрдЬрд╝ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рддрд░рдл, рдпрд╣ рд╕реА рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдУрд░, рдЕрдиреНрдп рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЗрд╕реЗ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкрд░рд┐рдЪрдп рдХреЗ рд╕рд╛рде, рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдХреЛрдбрд░рд┐рдирд╛рд░рд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рдФрд░, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХреЛрдЯрд▓рд┐рди рдбреАрдПрд╕рдПрд▓рдПрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рд╕реНрддрд╛рд░ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдФрд░ рд╕рд╣рдЬ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╢рд╛рд╕реНрддреНрд░реАрдп рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (phpize, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░, рдмрдирд╛рдУ), рдХрдо рд╕реЗ рдХрдо рджреЛ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - C рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛрдб рдФрд░ рдлрд╝рд╛рдЗрд▓
config.m4
ред
рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
- DSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
- рд╣рдо K / N рдкрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
- рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо
extension.c
рдФрд░ config.m4
рдЙрддреНрдкрдиреНрди config.m4
ред extencion.c
рдореЗрдВ рдХреЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА extencion.c
рд╕реЗ extencion.c
ред - рд╡рд░реНрдгрди рджреНрд╡рд╛рд░рд╛, рд╣рдо рдХреЙрдиреНрд╕реНрдЯреИрдВрдЯ.рдХреИрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ K / N рдкрд░ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рджрд┐рдП рдЧрдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рд╣рдо K / N рдХреЛрдб рдХреЛ рд╕реНрдЯреИрдЯрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
- рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ред
рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!
рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рддрд░рд╣ рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
(, ) 1 2 ... 1(, ) 1 2 ... 1 ...
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдЯрд▓рд┐рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреБрдХреНрдд рдбреАрдПрд╕рдПрд▓ рд▓рд┐рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдЦ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдЧрд▓рд╛ рдХрджрдо рдЗрд╕ рдбреАрдПрд╕рдПрд▓ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд╕реА K / N рдкрд░ рдПрдХ рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЙрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ DSL рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВ - рд╡реЙрдЗрд▓рд╛! рд╕рдорд╛рдзрд╛рди рд╕рдмрд╕реЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдЕрднреА рддрдХ рдЕрдзрд┐рдХ рд╕рд░рд▓ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
рдЦреИрд░, рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рд╕рднреА рдЬрд╛рджреВ рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИредрдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЖрдпрд╛?
рдЗрд╕ рдбреАрдПрд╕рдПрд▓ рдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рд░рд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд░рдг рдФрд░ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (
рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рд╕рднреА рддрд░реНрдХ рдПрдХ рдирд╛рдорд┐рдд рд░реВрдк рдореЗрдВ рджрд┐рдП рдЧрдП рд╣реИрдВ )ред
konfigure.kt - рдбреАрдПрд╕рдПрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди import php.extension.dsl.* val dsl = extension(name = "example", version = "0.1") { constant(name = "HELLO_EN", value = "Hello") constant(name = "HELLO_ES", value = "Hola") constant(name = "HELLO_RU", value = "") function(name = "hello", returnType = ArgumentType.STRING) { arg(type = ArgumentType.STRING, name = "name") arg(type = ArgumentType.STRING, name = "lang", optional = true) } } fun main(args: Array<String>) = dsl.make()
example.kt - рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ fun hello(name: String, lang: String?) = "${if (lang ?: "" == "") HELLO_EN else lang} $name!!!\n"
`рд▓реИрдВрдЧ` рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдпрд╣ рдХреЗ / рдПрди рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдЬреЛ рд╕реА рд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ `рдЪрд░ *` рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЪрд░ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ - рдЖрдкрдХреЛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
config.m4 - рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ PHP_ARG_ENABLE(example, whether to enable example support,[ --enable-example Enable hello support]) if test "$PHP_EXAMPLE" != "no"; then PHP_ADD_INCLUDE(.) PHP_ADD_LIBRARY_WITH_PATH(example_kt, ., EXAMPLE_SHARED_LIBADD) PHP_SUBST(EXAMPLE_SHARED_LIBADD) PHP_NEW_EXTENSION(example, example.c, $ext_shared) fi
example_generated_constants.kt - рдХреЛрдЯрд▓рд┐рди рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рдлрд╝рд╛рдЗрд▓ const val HELLO_EN = "Hello" const val HELLO_ES = "Hola" const val HELLO_RU = ""
example.c - C рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ #include "php.h" #include "example_kt_api.h" PHP_FUNCTION(hello); static zend_function_entry example_functions[] = { PHP_FE(hello, NULL) {NULL,NULL,NULL} }; PHP_MINIT_FUNCTION(example); zend_module_entry example_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 STANDARD_MODULE_HEADER, #endif "example", example_functions, PHP_MINIT(example), NULL, NULL, NULL, NULL, #if ZEND_MODULE_API_NO >= 20010901 "0.1", #endif STANDARD_MODULE_PROPERTIES }; ZEND_GET_MODULE(example) PHP_MINIT_FUNCTION(example) { REGISTER_STRING_CONSTANT("HELLO_EN", "Hello", CONST_CS|CONST_PERSISTENT); REGISTER_STRING_CONSTANT("HELLO_ES", "Hola", CONST_CS|CONST_PERSISTENT); REGISTER_STRING_CONSTANT("HELLO_RU", "", CONST_CS|CONST_PERSISTENT); return SUCCESS; } PHP_FUNCTION(hello){
рдХреЗрд╡рд▓ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпреЛрдВ
рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╕реЗ рдПрдХ рдХреЛрдЯрд▓реАрди рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореИрдк рд╣реИрдВред рддрд┐рдерд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЯрд░реЙрдк рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рддред C рд╕реЗ K / N рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐
zend_value
,
zend_class_entry
рдпрд╛
zend_fcall_info
, рдЖрдкрдХреЛ K / N рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд░реИрдкрд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╕рднреА рдореИрдХреНрд░реЛрдЬрд╝ рдЖрджрд┐ рднреА рд╣реИрдВред
рдЯрд╛рд░ рдХреЗ рд╕рд╛рде рдЬрд╛рд░ред рдПрдХ рдЪрдореНрдордЪ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
- рдХреЛрдЯрд▓рд┐рди рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬред рдпрд╣ рд╡рд╣рд╛рдБ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ... рдЕрдм рддрдХ, рдЕрдзреНрдпрдпрди рдХрд╛ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рд╛рдзрди рд╕реНрд░реЛрдд рдХреЛ рдкрдврд╝рдирд╛ рд╣реИред
- рдкрд░рд┐рдгрд╛рдореА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ рдЗрддрдирд╛ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рдЧрднрдЧ 500KB рдХрд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЖрдкрдХреЛ рдпрд╣ рднреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рдиреА рд╣реЛрдЧреА рдХрд┐ K / N рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЙрддреНрдкрд╛рдж рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдПред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ
"рдХреЗрд╡рд▓ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред
рдПрдХ рдмрд╛рд░ рдлрд┐рд░,
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдПрдХ
рд▓рд┐рдВрдХ ред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ :)