рдПрдХреНрд╕рдЯреЗрдВрд╢рди PHP рдФрд░ рдХреЛрдЯрд▓рд┐рди рдиреЗрдЯрд┐рд╡ред рднрд╛рдЧ рджреЛ, рдЪреЗрддрдирд╛

рдкрд╣рд▓реЗ рднрд╛рдЧ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢:


  1. рдФрдЬрд╛рд░реЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ред
  2. helloWorld() рдореЗрдВ helloWorld() рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред
  3. рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди C рдХреЛрдб рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВред


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╕реА рдХреЛ рдЫреВрдиреЗ рдХреЗ рдмрд┐рдирд╛ PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреЗ / рдПрди рдкрд░ред

рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдЬреЛ рдХреЛрдИ рднреА рдкрдврд╝рддрд╛ рд╣реИ рд╡рд╣ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ - рдЧрд┐рддреБрдм рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ

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

рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдореИрдВ рдПрдХ рдкреВрд░реНрдг рд░реВрдкрд░реЗрдЦрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ (рд╢рд╛рдпрдж рдмрд╛рдж рдореЗрдВ), рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░реЗрдВрдЧреЗ:

  1. рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдирд╛ рдЬреЛ PHP рдХреЛрдб рд╕реЗ рдХреЙрд▓ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
  2. рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ред
  3. рд╣рдо рдХреЗрд╡рд▓ рд╕рд░рд▓ PHP рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: string , boolean , int , float (рдФрд░ null )ред рдХреЛрдИ рд╕рд░рдгрд┐рдпрд╛рдБ, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рд╕рдВрд╕рд╛рдзрди, рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг, рдЖрджрд┐ред - рдореИрдВ рдЖрдкрдХреЛ рдиреАрдЪреЗ рдмрддрд╛рдКрдВрдЧрд╛ред

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

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

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╢рд╛рд╕реНрддреНрд░реАрдп рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (phpize, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░, рдмрдирд╛рдУ), рдХрдо рд╕реЗ рдХрдо рджреЛ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - C рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛрдб рдФрд░ рдлрд╝рд╛рдЗрд▓ config.m4 ред

рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:

  1. DSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
  2. рд╣рдо K / N рдкрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
  3. рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо extension.c рдФрд░ config.m4 рдЙрддреНрдкрдиреНрди config.m4 ред extencion.c рдореЗрдВ рдХреЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА extencion.c рд╕реЗ extencion.c ред
  4. рд╡рд░реНрдгрди рджреНрд╡рд╛рд░рд╛, рд╣рдо рдХреЙрдиреНрд╕реНрдЯреИрдВрдЯ.рдХреИрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ K / N рдкрд░ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рджрд┐рдП рдЧрдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  5. рд╣рдо K / N рдХреЛрдб рдХреЛ рд╕реНрдЯреИрдЯрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  6. рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ред

рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!


рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рддрд░рд╣ рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 (, ) 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){ //-,      char*  K/N char *name = malloc(1); name[0] = '\0'; size_t name_len=0; char *lang = malloc(1); lang[0] = '\0'; size_t lang_len=0; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &name, &name_len, &lang, &lang_len) == FAILURE) { return; } RETURN_STRING(example_kt_symbols()->kotlin.root.hello(name, lang)); } 

рдХреЗрд╡рд▓ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпреЛрдВ


рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╕реЗ рдПрдХ рдХреЛрдЯрд▓реАрди рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореИрдк рд╣реИрдВред рддрд┐рдерд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЯрд░реЙрдк рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рддред C рд╕реЗ K / N рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ zend_value , zend_class_entry рдпрд╛ zend_fcall_info , рдЖрдкрдХреЛ K / N рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд░реИрдкрд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╕рднреА рдореИрдХреНрд░реЛрдЬрд╝ рдЖрджрд┐ рднреА рд╣реИрдВред

рдЯрд╛рд░ рдХреЗ рд╕рд╛рде рдЬрд╛рд░ред рдПрдХ рдЪрдореНрдордЪ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред


  1. рдХреЛрдЯрд▓рд┐рди рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬред рдпрд╣ рд╡рд╣рд╛рдБ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ... рдЕрдм рддрдХ, рдЕрдзреНрдпрдпрди рдХрд╛ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рд╛рдзрди рд╕реНрд░реЛрдд рдХреЛ рдкрдврд╝рдирд╛ рд╣реИред
  2. рдкрд░рд┐рдгрд╛рдореА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ рдЗрддрдирд╛ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рдЧрднрдЧ 500KB рдХрд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдЖрдкрдХреЛ рдпрд╣ рднреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рдиреА рд╣реЛрдЧреА рдХрд┐ K / N рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЙрддреНрдкрд╛рдж рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдПред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ


"рдХреЗрд╡рд▓ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред

рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ ред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ :)

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


All Articles