
PHP рдорд╛рдЗрдХреНрд░реЛ-рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП, рд╕рд┐рдВрдЧрд▓ рдХреЛрдЯреНрд╕ рдХреЗ рд╕рд╛рде рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдгреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ, рдЗрддрдиреА рдкреНрд░рддрд┐рдпрд╛рдВ рддреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдирдИ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рдпрд╣ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдореБрдЦреНрдп рдЬреЛрд░ рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдВрджрд░ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреНрдпрд╛рдЧ
- рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ, рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рдиреИрдиреЛрд╕реЗрдХрдВрдб рдкрд░ рдмрдЪрдд рд╣реИ, рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдЗрдХреНрд░реЛрдПрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╢рди рдкрд░ рдЦреЛрдП рд╣реБрдП рд╕рдордп рдХреЛ рдЦреЛрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╕рдВрдХрд▓рди рд╕рдордп рдХреЗ "рдЕрдиреБрдХреВрд▓рди" рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИред
- рдореИрдВ рдХреЗрд╡рд▓ рд╕рд╛рд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХреЛрдб рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдХрдЯреМрддреА рдХрд░реВрдВрдЧрд╛ред
- рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВрдиреЗ PHP 7.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ
рд╕рдВрдХрд▓рди рдЪрд░рдг рдкрд░ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ
рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдХрд▓ рдЙрджреНрдзрд░рдгреЛрдВ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИред
рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдЗрд╕ рддрд░рд╣ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
statement -> expr -> scalar -> dereferencable_scalar -> T_CONSTANT_ENCAPSED_STRING
рдРрд╕рд╛ рдбрдмрд▓:
statement -> expr -> scalar -> '"' encaps_list '"' -> , ,
PHP microoptimifications рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдореЗрдВ,
рдкреНрд░рд┐рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣
рдЧреВрдВрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореА рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХреНрд░рдордмрджреНрдз рд╣реИрдВред
рдкрд╛рд░реНрд╕рд┐рдВрдЧ
рдЗрдХреЛ :
statement -> T_ECHO echo_expr_list -> echo_expr_list -> echo_expr -> expr
рдкрд╛рд░реНрд╕рд┐рдВрдЧ
рдкреНрд░рд┐рдВрдЯ :
statement -> expr -> T_PRINT expr -> expr ( )
рдпрд╛рдиреА рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рд╛рдБ,
рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ рдХрд╛ рдПрдХ рдХрджрдо рдкрд╣рд▓реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрджрдо, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рд▓реЗрдЦ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдмрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рдВрдХрд▓рди рдХреЗ рдЪрд░рдг рдореЗрдВ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдПрдХрд▓ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рдФрд░
рдкреНрд░рд┐рдВрдЯ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдпрд╛рдВ рдЦреЛ рджреЗрддреА рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рди рднреВрд▓реЗрдВ рдХрд┐ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдиреИрдиреЛрд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдЦреИрд░, рддрд╛рдХрд┐ рджреЛ рдмрд╛рд░ рдЙрдардирд╛ рди рдкрдбрд╝реЗред
рдкреНрд░рд┐рдВрдЯ рдФрд░
рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ рд╕рдВрдХрд▓рди рдХреЗ рдХрд╛рд░реНрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
1 - void zend_compile_print(znode *result, zend_ast *ast) 1 + void zend_compile_echo(zend_ast *ast) 2 2 { 3 3 zend_op *opline; 4 4 zend_ast *expr_ast = ast->child[0]; 5 5 6 6 znode expr_node; 7 7 zend_compile_expr(&expr_node, expr_ast); 8 8 9 9 opline = zend_emit_op(NULL, ZEND_ECHO, &expr_node, NULL); 10 - opline->extended_value = 1; 11 - 12 - result->op_type = IS_CONST; 13 - ZVAL_LONG(&result->u.constant, 1); 10 + opline->extended_value = 0; 14 11 }
рдареАрдХ рд╣реИ, рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ - рд╡реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди
рдкреНрд░рд┐рдВрдЯ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдПрдХ рдмрд░рд╛рдмрд░ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ 1. рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░
рдкреНрд░рд┐рдВрдЯ рдХреЗ рд╕рд╛рде рдЖрдк рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд░рд▓ рд░реЗрдЦрд╛, рдХреЛрдИ рддрд╛рдордЭрд╛рдо рдирд╣реАрдВ
рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕
echo 'Some string';
рдФрд░
echo "Some string";
рд▓рдЧрднрдЧ 2 (рдЕрд╕реНрд╡реАрдХрд░рдг P2) рдЯреЛрдХрди рдореЗрдВ рд▓рдЧрднрдЧ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
T_ECHO: echo T_ENCAPSED_AND_WHITESPACE/T_CONSTANT_ENCAPSED_STRING: "Some string"
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХрд▓ рдЙрджреНрдзрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ T_CONSTANT_ENCAPSED_STRING рдФрд░ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрдм рдпрд╣ рдкрд╕рдВрдж рдЖрдПред рдпрджрд┐ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХреЛрдИ рд╕реНрдерд╛рди рд╣реИ, рддреЛ T_ENCAPSED_AND_WHITESPACEред
Opcodes рдЕрдкрдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╣реЛрдЧрд╛:
line
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрджрд┐ рдЖрдк рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдХреБрдЫ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЪрдХреНрд░реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ, рдирд┐рд░рдВрддрд░ рддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЧрддрд┐рд╢реАрд▓ рд▓рд╛рдЗрди
4 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред
echo "Hello $name! Have a nice day!"; echo 'Hello '.$name.'! Have a nice day!'; echo 'Hello ', $name, '! Have a nice day!'; printf ('Hello %s! Have a nice day!', $name);
рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП:
T_ECHO: echo T_ENCAPSED_AND_WHITESPACE: Hello T_VARIABLE: $name T_ENCAPSED_AND_WHITESPACE: ! Have a nice day!
рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП (рддреАрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рднреА, рдХреЗрд╡рд▓ рдЕрд╡рдзрд┐ рдХреЗ рдмрдЬрд╛рдп рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╣реЛрдВрдЧреЗ):
T_ECHO: echo T_CONSTANT_ENCAPSED_STRING: 'Hello ' string: . T_VARIABLE: $name string: . T_CONSTANT_ENCAPSED_STRING: '! Have a nice day!'
рдЪреМрдереЗ рдХреЗ рд▓рд┐рдП:
T_STRING: printf T_CONSTANT_ENCAPSED_STRING: 'Hello %s! Have a nice day!' string: , T_VARIABLE: $name
рд▓реЗрдХрд┐рди рдСрдкрдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдордиреЛрд░рдВрдЬрдХ рд╣реЛрдЧрд╛ред
рдкрд╣рд▓рд╛ рдПрдХ:
echo "Hello $name! Have a nice day!"; line
рджреВрд╕рд░рд╛:
echo 'Hello '.$name.'! Have a nice day!'; line
рддреАрд╕рд░рд╛:
echo 'Hello ', $name, '! Have a nice day!'; line
рдЪреМрдерд╛:
printf ('Hello %s! Have a nice day!', $name); line
рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ `рдкреНрд░рд┐рдВрдЯрдл` рд╡рд╛рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╣рд▓реЗ рддреАрди рд╕реЗ рдЧрддрд┐ рдореЗрдВ рдЦреЛ рдЬрд╛рдПрдЧрд╛ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдВрдд рдореЗрдВ рдЕрднреА рднреА рд╡рд╣реА рдИрд╕реАрдПрдЪрдУ рд╣реИ), рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рд╕реНрд╡рд░реВрдкрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЕрдзрд┐рдХ рдпрд╛рдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╣реИ - рддреАрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреНрд░рдо рдХреЗ, рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдЕрдЬреАрдм рдЖрд░рдУрдкреАрдИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдореБрджреНрд░рд┐рдд рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред PHP рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд░реЙрдХреЗрдЯ рд╕рд╛рдЗрдВрд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ C-shny
fputs рдирд╣реАрдВ рд╣реИ ред рдХреМрди
рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдЧреЗрдВрдж
рдореБрдЦреНрдп / рдЖрдЙрдЯрдкреБрдЯ.рдХрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
php_output_write рд╕реЗ рд╢реБрд░реВ
рд╣реЛрддреА рд╣реИ ред
Concatред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - рд╣рдо рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рддрд╛рд░ рдореЗрдВ рддрд░реНрдХ рдФрд░ рддреЗрдЬреА рд╕реЗ
рдореЗрдореНрдХрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛
zend_string рдмрдирд╛рддреЗ рд╣реИрдВред рдПрдХрдорд╛рддреНрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде, рдПрдХ рд╣реА рдмрд╛рдЗрдЯ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рдирдИ рд▓рд╛рдЗрдиреЗрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдВрдЧреАред
рд▓реЗрдХрд┐рди ROPE_INIT, ROPE_ADD рдФрд░ ROPE_END рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рд╣рд╛рдереЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
- ROPE_INIT (ext = 3, return = ~ 3, рдСрдкрд░реЗрдВрдб = 'Hello +')
рд╣рдо рддреАрди рд╕реНрд▓реЙрдЯ (рдПрдХреНрд╕рдЯ) рд╕реЗ "рд░рд╕реНрд╕реА" рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ 0 рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ 'рд╣реИрд▓реЛ +' (рдСрдкрд░реЗрдВрдб) рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ "рд░рд╕реНрд╕реА" рд╡рд╛рд▓реЗ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ ~ 3 (рд░рд┐рдЯрд░реНрди) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред - ROPE_ADD (ext = 1, return = ~ 3, рдСрдкрд░реЗрдВрдб = ~ 3; 0!)
рд╣рдо "рд░рд╕реНрд╕реА" ~ 3 (рдСрдкрд░реЗрдВрдб) рдХреЗ рд╕реНрд▓реЙрдЯ 1 (ext) рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ 'рд╡рд╛рд╕реНрдпрд╛' рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ! 0 (рдСрдкрд░реЗрдВрдбреНрд╕) рдФрд░ "рд░рд╕реНрд╕реА" ~ 3 (рд░рд┐рдЯрд░реНрди) рд╡рд╛рдкрд╕ рдХрд░реЗрдВред - ROPE_END (ext = 2, return = ~ 2, рдСрдкрд░реЗрдВрдб = ~ 3, '% 21 + рд╣реИ + рдПрдХ + рдЕрдЪреНрдЫрд╛ + рджрд┐рди% 21')
рд╣рдо рдкрдВрдХреНрддрд┐ 2 (ext) рдореЗрдВ '% 21 + рд╣реИ + a + рдЕрдЪреНрдЫрд╛ + рджрд┐рди% 21' (рдСрдкрд░реЗрдВрдб) рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ zend_string рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА "рд░рд╕реНрд╕реА" рд╕реНрд▓реЙрдЯ рдХреЛ рдЙрд╕реА ccpy рдХреЗ рд╕рд╛рде рдмрджрд▓реЗ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдЕрд▓рдЧ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдВрдХ рд╕реНрд▓реЙрдЯ рдореЗрдВ рд░рдЦреЗ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдХреЛрдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдмрд╣реБрдд рд╕реБрдВрджрд░ред :)
рдЪрд▓реЛ рдмреЗрдВрдЪрдорд╛рд░реНрдХред рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ
zend_vm_execute.h (IMHO рдпрд╣ рд╕рд╣реА рд╣реЛрдЧрд╛) 71 рд╣рдЬрд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ 100 рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП 100 рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо (рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдк 10 рдмрд╛рд░ рд╢реБрд░реВ рд╣реБрдИ, рд╕рдмрд╕реЗ рдЖрдо рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реБрдП):
<?php $file = explode("\n", file_get_contents("C:\projects\C\php-src\Zend\zend_vm_execute.h")); $out = []; for ($c = 0; $c < 100; $c++) { $start = microtime(true); ob_start(); $i = 0; foreach ($file as $line) { $i++;
рд╣рдо рдХреНрдпрд╛ рдорд╛рдкрддреЗ рд╣реИрдВ | рд╕реЗрдХрдВрдб рдореЗрдВ рдФрд╕рдд рд╕рдордп |
---|
"рд░рд╕реНрд╕реА" | 0.0129 |
рдХрдИ ECHO | 0.0135 |
рдХрдбрд╝реА | 0.0158 |
рдкреНрд░рд┐рдВрдЯрдл , рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП | 0.0245 |
рдирд┐рд╖реНрдХрд░реНрд╖
- рд╕рд░рд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде рддрд╛рд░ рдХреЗ рд▓рд┐рдП, рдПрдХрд╛рдПрдХ, рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдХреЗ рд╕рднреА рдПрдХрд▓ рдЙрджреНрдзрд░рдг рд╕реЗ рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЗрд╖реНрдЯрддрдо рд╣реИрдВред рдФрд░ рдЬрд┐рддрдиреА рд▓рдВрдмреА рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрддрдирд╛ рдЕрдзрд┐рдХ рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИред
- рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рддрд░реНрдХ ... рдХрдИ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред рдорд╛рдк рд╕реЗ, рдпрд╣ "рд░рд╕реНрд╕реА" рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЧрддрд┐ рдФрд░ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рд╛рд░реЗ "рдЪрд░" рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реВрдХреНрд╖реНрдо-рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рдпрд╛ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЪреБрдирддреЗ рд╕рдордп, рдЕрдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдпрд╛ рдЖрдкрдХреА рдХрдВрдкрдиреА рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛рдИ рдЧрдИ рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓реАред
рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рд╡рд┐рд╡рд░реНрдЧреАрдЬрд╝рдиреА рдирдЬрд╝рд░ рдХреА рд╡рдЬрд╣ рд╕реЗ рд╕рдорд╡рд░реНрддреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕реЗ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреБрдирд╢реНрдЪ рдЕрдЧрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - рдореБрдЭреЗ рдмрддрд╛рдПрдВ - рдПрдХ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ: рд╡реАрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА, рд╡реАрдПрд╕ рдХреЗ рд▓рд┐рдП рд╡реАрдЖрд░рдИрдЪ, рдЖрдкрдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП ... :)
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
HEREDOC рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ "рдЬрдЯрд┐рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕" (рдЬрд╣рд╛рдВ рдЪрд░ рдЕрдВрджрд░ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рд╣реИрдВ) рд╕рдорд╛рди рдбрдмрд▓-рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╣реИрдВ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рддрд░рд╣ рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВред
рдЗрд╕ рддрд░рд╣ HTML рдХреЗ рд╕рд╛рде PHP рдХрд╛ рдорд┐рд╢реНрд░рдг:
<?php $name = 'Vasya';?>Hello <?=$name?>! Have a nice day!
рдпрд╣ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рд┐рд░реНрдл 3
рдЧреВрдВрдЬ рд╣реИред