рдЗрд╕реЗ рддрдирд╛рд╡! - PHP рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдФрд░ рдбреЗрдЯрд╛ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ

рдкрд░рд┐рдЪрдп


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

рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ PHP 5.3 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рдЕрдирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдпрд╛ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЙрд╕реА рд╕рдордп, рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВред рдореИрдВрдиреЗ рднрд╡рд┐рд╖реНрдп рдХреА рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

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

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

рдХрдХреНрд╖рд╛ рдХрд╛ рддрдирд╛рд╡


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рд╡рд░реНрдЧ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреЛрдЧреБрдиреА рд╣реИред рдЖрдЗрдП, рдЗрд╕рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдмреЗрд╢рдХ, рдХреБрдЫ рднреА рдЖрдкрдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЙрдирдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреЛ рдЬрд▓реНрджрдмрд╛рдЬреА рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдирд╛рдореЛрдВ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдмрд╣реБрдд рдбрд░рд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ред

рдХрд╛рд╕реНрдЯ рдлрдВрдХреНрд╢рди (FP)

рдбреЗрдЯрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдПрдлрдкреА (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЪрд░)ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрд░реНрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ рдЬреЛ рд╕рдм рдХреБрдЫ INTEGER рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдЧрд╛ред
Strain :: add ( 'integer' , function ( & $value , $options = null ) { <br/>
$value = ( int ) $value ; <br/>
} ) ;

рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдореЗрдВ, рдореИрдВ рдпрд╣рд╛рдВ рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рд╕реАрдорд╛ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред

рдЕрдм рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
$var = '56' ; // ! . <br/>
Strain :: it ( $var , 'integer' ) ; <br/>
var_dump ( $var ) ; <br/>
<br/>
// : int(56)

рд╕рдорд╛рд░реЛрд╣ рдорд╛рдиреНрдпрддрд╛ (PV)

рдПрдлрд╡реА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдлреЗрдВрдХрддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдпрд╛рдиреА NULL рд▓реМрдЯрд╛рддрд╛ рд╣реИ), рддреЛ рдбреЗрдЯрд╛ рд╕рд╣реА рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
Strain :: add ( 'must_be_integer' , function ( & $value , $options = null ) { <br/>
if ( ! is_int ( $value ) ) return true ; <br/>
} ) ;

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдмреЗрдорд╛рдиреА рд╣реИрдВред рдЖрдЗрдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рджреЗрдЦреЗрдВ:

$var = '56' ; <br/>
var_dump ( Strain :: it ( $var , 'must_be_integer' ) ) ; <br/>
<br/>
// : TRUE

TRUE рдПрдХ рддреНрд░реБрдЯрд┐ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдк рд▓реМрдЯреЗ рдореВрд▓реНрдп рдХреЛ рд╕реНрдЯреНрд░реЗрди :: $ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ TRUE рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ)

рдкрд░рд┐рд╖реНрдХреГрдд рдЙрджрд╛рд╣рд░рдг

рдЕрдм рдЬрдм рд╣рдордиреЗ рдореВрд▓ рдмрд╛рддреЗрдВ рдкрддрд╛ рд▓рдЧрд╛ рд▓реА рд╣реИрдВ, рддреЛ рддрдирд╛рд╡ - рд╡рд╕реНрддреБ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд╡рдпрдВ рдмрдирд╛рдПрдВред рдФрд░ рдЗрд╕реЗ рд░рд╣рдиреЗ рджреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдЬрд┐рд╕реЗ рд╣рдо рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
$user = ( object ) array ( <br/>
'email' => 'user@site.com' , <br/>
'name' => 'User' , <br/>
'address' => ( object ) array ( <br/>
'city' => 'Default City' , <br/>
'street' => 'Street' <br/>
) <br/>
) ;

рдФрд░ рдЗрд╕рд▓рд┐рдП ... рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рд╣реА рдбреЗрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдлреЗрдВрдХрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╣рдореЗрдВ рд╕рднреА рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдареАрдХ рд╕реЗ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рддрдирд╛рд╡ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрди рд╣реЛрдЧрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдореИрдВ рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ "рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдпреЛрдЬрдирд╛" (рдПрд╕рдПрдл) рдХрд╣реВрдВрдЧрд╛ред
$valid = ( object ) array ( <br/>
'email' => array ( 'email' , 'UserExists' ) , <br/>
'name' => array ( 'string' , 'regexp' => '/^[A-Za-z0-9 _-]{3,20}$/' ) , <br/>
'address' => ( object ) array ( <br/>
'city' => 'string' , <br/>
'street' => 'string' <br/>
) <br/>
) ;

рдПрд╕рдПрдл рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред рдпрд╣ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛ рд░рд╣реА рдбреЗрдЯрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХрд┐рд╕реА рддрд░рд╣ "рдЕрдЬреАрдм" рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╡рд╕реНрддреБ рдХреА рд░рдЪрдирд╛ рдХреИрд╕реЗ рд╣реБрдИ рдереАред

рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ - рдорд┐рд╢реНрд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреА, рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯ $ рд╡рд┐рдХрд▓реНрдк рдЪрд░? рдпрд╣ рдмрд╛рдд рд╣реИ!

рдЕрдм рдЪреЗрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкрд░рд┐рдЪрд┐рдд рдЪреБрдиреМрддреА рд╣реИред
Strain :: it ( $user , $valid ) ; // FALSE

рдпрд╣ рджреЗрдЦрдирд╛ рди рднреВрд▓реЗрдВ рдХрд┐ рддрдирд╛рд╡ рдореЗрдВ рдХреНрдпрд╛ рд░рд╣рддрд╛ рд╣реИ :: $ рдкрд░рд┐рдгрд╛рдо
object ( stdClass ) #7 (3) {<br/>
[ "email" ] => <br/>
NULL <br/>
[ "name" ] => <br/>
NULL <br/>
[ "address" ] => <br/>
object ( stdClass ) #9 (2) {<br/>
[ "city" ] => <br/>
NULL <br/>
[ "street" ] => <br/>
NULL <br/>
} <br/>
}

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЬреЛрдбрд╝реА

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рдЧреБрд░ рд╕реАрдЦрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕реВрдЪреА рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдЬреЛ рдХреБрдЫ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, $ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди FALSE рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо NULL рд╣реЛрдЧрд╛, рдФрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдЪреЗрдХ рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдорд╛рди NULL рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдПрдХ рдЪреЗрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
$valid = array ( 'null' , 'string' , 'length' => array ( 2 , 10 ) ) ;

'рдЕрд╢рдХреНрдд' рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдЖрдкрдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рдпрд╣ FALSE рд▓реМрдЯрд╛рдП, рдпрджрд┐ рдпрд╣ рдПрдХ рдкреВрд░реНрдг рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдЧреЗ рд╕рддреНрдпрд╛рдкрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

рдПрдХ рд╣реА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдХреА рдЬрд╛рдБрдЪ рдХрд╛ рдПрд╣рд╕рд╛рд╕ред
$valid = array ( 'array_of' => array ( 'string' , 'length' => array ( 2 , 10 ) ) ) ;

рдПрд╕рдПрдл рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг, рдЬрд┐рд╕реЗ рд╡рд╣ рдЕрдкрдиреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдгред рд╢рд░реНрддреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдпрд╛ред
$valid = array ( 'mixed' => array ( 'null' , array ( 'string' , 'length' => array ( 2 , 10 ) ) ) ) ;

рдпрд╣ рдКрдкрд░ рджрд┐рдП рдЧрдП NULL рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ FALSE рдХреЛ рд╡рд╛рдкрд╕ рдХрд┐рдП рдмрд┐рдирд╛ред рдЗрд╕реА рддрд░рд╣, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдПрдХреНрд╕рдУрдЖрд░, рдПрдирдЖрд░ рдФрд░ рдмреАрдЖрд░рдЖрд░рдЖрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ!

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рддрдирд╛рд╡ рдХреЗ рддреАрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ :: рдпрд╣ () рд╡рд┐рдзрд┐ред рдпрд╣ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди:

0: рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ;
1: рдлрд╝рд┐рд▓реНрдЯрд░ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧреБрдгреЛрдВ рдХреЛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ;
2: рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧреБрдг рдирд╣реАрдВ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ;
3: 1 рдФрд░ 2 рдПрдХ рд╕рд╛рдеред (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗред рдХреЗрд╡рд▓ рдЗрд╕ рдорд╛рди рдХреЗ рд╕рд╛рде рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдореЗрдВ SF рдХреЗ рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдЧреА, рднрд▓реЗ рд╣реА рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрдЬрд╛рдп рдХреБрдЫ NULL рдбрд╛рд▓ рджреЗрдВ )

рдпрд╛рдиреА рд╡рд░реНрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЧреБрдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдирдП рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрд╕рдПрдл рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд░реНрдорд┐рдд рдЧреБрдг рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ NULL рд╣реИрдВ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗ рдЧрдП рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ 'array_of' рдФрд░ 'рдорд┐рд╢реНрд░рд┐рдд' рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдПред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рд╣рд░ рдХреЛрдИ рдЕрднреА рднреА рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ред

рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдФрд░ рдХреЛрдб рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдПрдлрдкреА рдФрд░ рдкреАрд╡реА рдХреЗ рдирд╛рдореЛрдВ рдХреА рд╡рд░реНрддрдиреА рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА FI рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ (рдпрд╛ рдЕрдВрдд рдореЗрдВ) '!' рдЕрдХреНрд╖рд░ рд╡рд╛рд▓реЗ рдирд╛рдо рджрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЖрдУ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддрд░реНрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред

рдорд╣рддреНрд╡рдкреВрд░реНрдг! рдлрд┐рд▓рд╣рд╛рд▓, рдХрдХреНрд╖рд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЕрднреА рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдФрд░ рдЬреЛрдЦрд┐рдо рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реНрд░реЛрдд рдХрд╛ рд▓рд┐рдВрдХ:
рдЧрд┐рдЯрд╣рдм рдкрд░ рддрдирд╛рд╡ рдХреЗ рд╕реНрд░реЛрдд

PS рдФрд░ рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рднреА рдЬреЗрдПрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ?

рдЕрджреНрдпрддрди: рдпрджрд┐ рдХреЛрдИ рдмрд╣реБрдд рднреНрд░рдорд┐рдд рд╣реИ рдХрд┐ рдпрд╣ () рд╡рд┐рдзрд┐ TRUE рджреЗрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рдФрд░ FALSE рдЬрдм рдпрд╣ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡реЗ рдЗрд╕рдХреЗ рдХреЛрдб рдХреЛ рд╕рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХрдХреНрд╖рд╛ рдХреЗ рдХрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЕрджреНрдпрддрди 2: рдЪреЗрдХ () рдкрджреНрдзрддрд┐ рдХреЛ рд╡рд░реНрдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ () рд╡рд┐рдзрд┐ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ FALSE рдирд╣реАрдВ рд╣реИрдВ рддреЛ TRUE рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЕрджреНрдпрддрди 3: рд╕реНрдХреАрдорд╛ рдореЗрдВ рд╕реАрдзреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рд╕рд╛рде рд╣реА рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдпреЛрдЬрдирд╛рдмрджреНрдз рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдЬреЛ рд╢рд╛рдпрдж рдХрд┐рд╕реА рдЕрдиреНрдп рд▓реЗрдЦ рдкрд░ рдЦреАрдВрдЪрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╣ рд╕рдордЭрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИред

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


All Articles