PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди: рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

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

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛрдб рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреА рд╣реИрдВ (рдЬреЛ, рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рд╣рдо C ++ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ) PHP- рдлрд╝рдВрдХреНрд╢рдВрд╕ред рдЗрд╕рдХреЗ рд▓рд┐рдП, call_user_function_ex рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдвреВрдВрдврдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ; рд╕рдорд╕реНрдпрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ рдпрджрд┐ рдЖрдк рдПрдХ C ++ 'рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдЗрд╕рдХреА рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ PHP рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

ZEND_FUNCTION(MyFunction) { тАж } 


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

 ZEND_FUNCTION(MyFunction) { ... char *result = myInnerFunction ( CG ( function_table ), tsrm_ls ); ... } char *myInnerFunction ( HashTable *function_table, void ***tsrm_ls ) { ... call_user_function_ex(...); ... } 


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

 for (zend_hash_internal_pointer_reset_ex (arr_hash, &pointer); zend_hash_get_current_data_ex (arr_hash, (void**) &data, &pointer ) == SUCCESS; zend_hash_move_forward_ex (arr_hash, &pointer)) { ... } 


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

 $a = Array ( "user" => Array ( Array ( "name" => "Ivanov", "age" => 28), Array ( "name" => "Petrov", "age" => 23) ) ); 


C ++ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреИрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕рдореЗрдВ рдорд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 string keys[] = { "user_0_name", "user_0_age", "user_1_name", "user_1_age" }; string values[] = { "Ivanov", "28", "Petrov", "23" }; 

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


All Articles