рд╣рдо рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдмрд┐рдирд╛ PHP рдХреЛрдб рдореЗрдВ рдмрдЧ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

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


рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг:


 strpos      . 

рд▓реЗрдХрд┐рди рдПрдХ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХреА рдХрдИ рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рднреА рдЗрд╕ рддрд░рд╣ рдХрд╛ рдирд┐рджрд╛рди "рд╢реВрдЯ" рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрд╕рдлрд▓ рдкрд░рд┐рдХрд▓реНрдкрдирд╛рдУрдВ рдкрд░ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


рдЖрдЬ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдмрд┐рдирд╛ рдХреЛрдб рд▓рд┐рдЦреЗ phpgrep рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред



рдХрдЯреМрддреА рдХреЗ рддрд╣рдд:


  • рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдмрдЧреНрд╕ рдХреА рдЦреЛрдЬ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред
  • Phpgrep рджреНрд╡рд╛рд░рд╛ рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрддред
  • рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдЦреЛрдЬ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрддред




рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ


рдЕрдм рдХрдИ рдорд╣реАрдиреЛрдВ рд╕реЗ, рдореИрдВ NoVerify PHP linter рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ( NoVerify рд▓реЗрдЦ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВ : Linter for PHP рд╕реЗ VKontakte Team )ред


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


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


рдореИрдВ рдЪрд╛рд▓рд╛рдХ grep рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╢рд╛рдо рдореИрдВрдиреЗ рдиреАрдЪреЗ рдмреИрдардХрд░ phpgrep рд▓рд┐рдЦрдиреЗ рдХрд╛ phpgrep ред


рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рдорд▓рд╛


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


рд╣рдорд╛рд░реА рдХрд┐рдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рдереАрдВ:



рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╣рдо рд╕рд╛рдЬрд┐рд╢ рд░рдЪ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╕реЗрдЯ рд╣реИред


рддреЛ рдЪрд▓рд┐рдП!


рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


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


  • рд╕рдВрджрд░реНрдн рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдСрдкрд░реЗрд╢рди (рддрд╛рд░реНрдХрд┐рдХ рд╕реНрдерд┐рддрд┐) рдФрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ
  • рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдХреЛрдИ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕реНрдерд┐рд░ рд╣реИ,

рдпрд╣ рдХреЛрдб рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд▓реЛ "рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрджрд░реНрдн" рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ:


  1. рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдВрджрд░ " if ($cond) "ред
  2. рдЯрд░реНрдиреЗрд░реА рдСрдкрд░реЗрдЯрд░ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ: " $cond ? $x : $y "ред
  3. рдЫреЛрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░рдВрддрд░рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ " while ($cond) " рдФрд░ "рдХреЗ for ($init; $cond; $post) "ред

рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рджрд╛рдИрдВ рдУрд░, рд╣рдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдпрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред


рд╣рдореЗрдВ рдРрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрджрд┐ рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рднреАрддрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдЯрд╛рдЗрдкреЛ рдерд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "=" рдХреЛ "==" рджреНрд╡рд╛рд░рд╛ рдирд┐рд╣рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

рдЪрд▓реЛ рд╢реБрд░реВ (1) рдХреЗ рд╕рд╛рде:


 #      # |      (  ) # | | # | | phpgrep . 'if ($_ = []) $_' # 1 # | # | #    #  3    . phpgrep . 'if ($_ = ${"const"}) $_' # 2 phpgrep . 'if ($_ = ${"str"}) $_' # 3 phpgrep . 'if ($_ = ${"num"}) $_' # 4 

рдпрд╣рд╛рдВ рд╣рдо 4 рдкреИрдЯрд░реНрди рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (RHS) рд╣реИред рдкрд╣рд▓реЗ рдПрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред


рдЯреЗрдореНрдкрд▓реЗрдЯ " if ($_ = []) $_ " рдПрдХ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рд╣реИред $_ рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдпрд╛ рдХрдерди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред


     (RHS) | if ($_ = []) $_ | | |   if',   ,  {}    LHS   

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


  • const рдПрдХ рдирд╛рдорд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдпрд╛ рд╡рд░реНрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИред
  • str рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рд╣реИред
  • num рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╢рд╛рдмреНрджрд┐рдХ рд╣реИред

рдпреЗ рдкреИрдЯрд░реНрди рдорд╛рдорд▓реЗ рдкрд░ рдХрдИ рд╕рдВрдЪрд╛рд▓рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред


тОЖ рдордиреЛрджрд╢рд╛ / рдмреНрд▓реЙрдХ / rss_client / viewfeed.php # L37 :


 if ($courseid = SITEID) { $courseid = 0; } 

рдореВрдб рдореЗрдВ рджреВрд╕рд░реА рдЯреНрд░рд┐рдЧрд░ рдПрдбреАрдУрдбреАрдмреА рдирд┐рд░реНрднрд░рддрд╛ рдереАред рдЕрдкрд╕реНрдЯреНрд░реАрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ, рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред


тОЖ ADOdb / рдбреНрд░рд╛рдЗрд╡рд░ / adodb-odbtp.inc.php # L741 :



рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред databaseType рдлреАрд▓реНрдб рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрд╢рд╛ рдХрдВрдбреАрд╢рди рдХреЗ рдЕрдВрджрд░ рдЬрд╛рддреЗ рд╣реИрдВред


рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЬрдЧрд╣ рдЬрд╣рд╛рдВ рд╣рдо рдХреЗрд╡рд▓ "рд╕рд╣реА" рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдореЗрд╢рд╛ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рд╕реА рднреА рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╕рд╣реА рдорд╛рдиреЗрдВ!


тОЖ рдордиреЛрджрд╢рд╛ / рдкреНрд░рд╢реНрди / рдкреНрд░рд╛рд░реВрдк / рдмреНрд▓реИрдХрдмреЛрд░реНрдб_рд╕рд┐рдХреНрд╕ / рд╕реНрд╡рд░реВрдкрдХ.рдкреНрд░ред # L598 :


 // For BB Fill in the Blank, only interested in correct answers. if ($response->feedback = 'correct') { // ... } 

рдЗрд╕ рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реВрдЪреА
  phpgrepред  'for ($ _? $ _ = []; $ _) $ _'
 phpgrepред  'for ($ _; $ _ = $ {"const"}; $ _) $ _'
 phpgrepред  'for ($ _; $ _ = $ {"рд╕рдВрдЦреНрдпрд╛"}; $ _) $ _'
 phpgrepред  'for ($ _; $ _ = $ {"str"}; $ _) $ _'
 phpgrepред  'рдЬрдмрдХрд┐ ($ _ = []) $ _'
 phpgrepред  'рдЬрдмрдХрд┐ ($ _ = $ {"рдХрд╛рд╕реНрдЯ"}) $ _'
 phpgrepред  'рдЬрдмрдХрд┐ ($ _ = $ {"рд╕рдВрдЦреНрдпрд╛"}) $ _'
 phpgrepред  'рдЬрдмрдХрд┐ ($ _ = $ {"str"}) $ _'
 phpgrepред  'рдЕрдЧрд░ ($ _ = []) $ _'
 phpgrepред  'if ($ _ = $ {"const"}) $ _'
 phpgrepред  'if ($ _ = $ {"str"}) $ _'
 phpgrepред  'рдЕрдЧрд░ ($ _ = $ {"рд╕рдВрдЦреНрдпрд╛"}) $ _'
 phpgrepред  '$ _ = []?  $ _: $ _ '
 phpgrepред  '$ _ = $ {"рдХрд╛рд╕реНрдЯ"}?  $ _: $ _ '
 phpgrepред  '$ _ = $ {"str"}?  $ _: $ _ '
 phpgrepред  '$ _ = $ {"рд╕рдВрдЦреНрдпрд╛"}?  $ _: $ _ '
 phpgrepред  '($ _ = []) рдФрд░& $ _'
 phpgrepред  '($ _ = $ {"рдХрд╛рд╕реНрдЯ"}) рдФрд░& $ _'
 phpgrepред  '($ _ = $ {"str"}) рдФрд░& $ _'
 phpgrepред  '($ _ = $ {"рд╕рдВрдЦреНрдпрд╛"}) рдФрд░& $ _'
 phpgrepред  '$ _ && $ _ = []'
 phpgrepред  '$ _ && $ _ = $ {"рдХрд╛рд╕реНрдЯ"}'
 phpgrepред  '$ _ && $ _ = $ {"str"}'
 phpgrepред  '$ _ && $ _ = $ {"рд╕рдВрдЦреНрдпрд╛"}'
 phpgrepред  '($ _ = []) ||  $ _ '
 phpgrepред  '($ _ = $ {"рдХрд╛рд╕реНрдЯ"}) ||  $ _ '
 phpgrepред  '($ _ = $ {"str"}) ||  $ _ '
 phpgrepред  '($ _ = $ {"рд╕рдВрдЦреНрдпрд╛"}) ||  $ _ '
 phpgrepред  '$ _ ||  $ _ = [] '
 phpgrepред  '$ _ ||  $ _ = $ {"рдХрд╛рд╕реНрдЯ"} '
 phpgrepред  '$ _ ||  $ _ = $ {"str"} '
 phpgrepред  '$ _ ||  $ _ = $ {"рд╕рдВрдЦреНрдпрд╛"} ' 

рдЖрдЗрдП рджреЛрд╣рд░рд╛рдПрдВ рдХрд┐ рд╣рдордиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛:


  • рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреЗ рдЧрдП php рдХреЛрдб рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВред
  • $_ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реИред рдЖрдк рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ . рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВред
  • ${"<class>"} рдПрдХ AST рддрддреНрд╡ рдкреНрд░рдХрд╛рд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд╕рд╛рде $_ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рднреА рдЬреЛрд░ рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЪрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреИрдЯрд░реНрди " array(1, 2 + 3) " рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рдорд╛рди рдХреЛрдб рд╕реЗ рд╣реА рд╕рдВрддреБрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред рджреВрд╕рд░реА рдУрд░, рдкреИрдЯрд░реНрди " array($_, $_) " рдХрд┐рд╕реА рднреА рджреЛ-рддрддреНрд╡ рд╕рд░рдгреА рд╢рд╛рдмреНрджрд┐рдХ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред


рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛


рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдХреБрдЫ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдмрд╣реБрдд рдХрдо рд╣реИред рдпрд╣ рдПрдХ NaN рдЬрд╛рдБрдЪ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЖрдзреЗ рд╕рдордп рдореЗрдВ рдпрд╣ рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рддреНрд░реБрдЯрд┐ рд╣реИред


тОЖ рд╡рд┐рдХрд┐рдпрд╛ / рдРрдк / рдПрдХреНрд╕рдЯреЗрдВрд╢рди / рд╕реЗрдореЗрдЯрд┐рдХрдбреНрд░рд┐рд▓рдбрд╛рдЙрди / рд╢рд╛рдорд┐рд▓ / SD_FilterValue.php # рдПрд▓рдЖрдИрд╕реА :


 if ( $fv1->month == $fv1->month ) return 0; 

рджрд╛рдИрдВ рдУрд░ " $fv2->month " рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рднрд╛рдЧреЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо " _ " рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдкреИрдЯрд░реНрди рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рддрдВрддреНрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдмреИрдХрд▓рд┐рдВрдХреНрд╕ рдХреЗ рд╕рдорд╛рди рд╣реИред


рдкреИрдЯрд░реНрди " $x == $x " рд╡рд╣реА рд╣реЛрдЧрд╛ рдЬреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИред " x " рдХреЗ рдмрдЬрд╛рдп, рдХрд┐рд╕реА рднреА рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдирд╛рдо рд╕рдорд╛рди рд╣реИрдВред рдХреИрдкреНрдЪрд░ рд╡реИрд░рд┐рдПрдмрд▓ рдЬрд┐рдирдХреЗ рдирд╛рдо рдЕрд▓рдЧ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХреИрдкреНрдЪрд░ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рди рд╕рд╛рдордЧреНрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг " $x <= $x " рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред


тОЖ Drupal / core / рдореЙрдбреНрдпреВрд▓ / рд╡рд┐рдЪрд╛рд░ / рдкрд░реАрдХреНрд╖рдг / src / Unit / ViewsDataTest.php # L166 :


 $prev = $base_tables[$base_tables_keys[$i - 1]]; $current = $base_tables[$base_tables_keys[$i]]; $this->assertTrue( $prev['weight'] <= $current['weight'] && $prev['title'] <= $prev['title'], // <--------------  'The tables are sorted as expected.'); 

рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдмрдЯреЗрдХреНрд╢рдиреНрд╕


рдЕрдм рдЬрдм рд╣рдо рдмрд╛рд░-рдмрд╛рд░ рд╕рдмрдЯреЗрдХреНрд╢рдВрд╕ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдкреИрдЯрд░реНрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рд╕реЗ рдПрдХ " $_ ? $x : $x " рд╣реИред
рдпрд╣ рд╕рдЪреНрдЪреА / рдЭреВрдареА рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рд╣реИред


S рдЬреВрдорд▓рд╛-рд╕реЗрдореА / рд▓рд╛рдЗрдмреНрд░реЗрд░реА / src / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЗрд▓реНрдкрд░ред рдПрдлрдкреА # рдПрд▓ релреиреи :


 return ($show_encrypt) ? '{SHA256}' . $encrypted : '{SHA256}' . $encrypted; 

рджреЛрдиреЛрдВ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХреЛрдб рдореЗрдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЖрд╕-рдкрд╛рд╕ рдХреЗ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдкрдардиреАрдпрддрд╛ рдХреА рдЦрд╛рддрд┐рд░, рдореИрдВрдиреЗ рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдФрд░ рдЪрд░ рдХрд╛ рдирд╛рдо рдШрдЯрд╛рдХрд░ $enc $encrypted рдХрд░ рджрд┐рдпрд╛ред


 case 'crypt-blowfish': return ($show_encrypt ? '{crypt}' : '') . crypt($plaintext, $salt); case 'md5-base64': return ($show_encrypt) ? '{MD5}' . $enc : $enc; case 'ssha': return ($show_encrypt) ? '{SSHA}' . $enc : $enc; case 'smd5': return ($show_encrypt) ? '{SMD5}' . $enc : $enc; case 'sha256': return ($show_encrypt) ? '{SHA256}' . $enc : '{SHA256}' . $enc; default: return ($show_encrypt) ? '{MD5}' . $enc : $enc; 

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:


 - ($show_encrypt) ? '{SHA256}' . $encrypted : '{SHA256}' . $encrypted; + ($show_encrypt) ? '{SHA256}' . $encrypted : $encrypted; 

PHP рдореЗрдВ рдЦрддрд░рдирд╛рдХ рдСрдкрд░реЗрд╢рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ


PHP рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрд╣рддрд┐рдпрд╛рдд рдЬрд╣рд╛рдБ рднреА рдЧрдгрдирд╛ рдХреЗ рд╕рд╣реА рдХреНрд░рдо рдХрд╛ рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд╡рд╣рд╛рдБ рдХреЛрд╖реНрдардХ рдХреЗ рд╕рдореВрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ " x & mask != 0 " рдХрд╛ рдПрдХ рд╕рд╣рдЬ рдЕрд░реНрде рд╣реИред рдпрджрд┐ mask рдереЛрдбрд╝рд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЛрдб рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ x рдпрд╣ рдмрд┐рдЯ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, PHP рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПрдЧреА: " x & (mask != 0) ", рдЬреЛ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред


рд╡рд░реНрдбрдкреНрд░реЗрд╕, рдЬреВрдорд▓рд╛ рдФрд░ рдореВрдбрд▓ рд╕рд┐рдВрдкрд▓реАрдкреЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред


тОЖ SimplePie / рдкреБрд╕реНрддрдХрд╛рд▓рдп / SimplePie / Locator.php # L254
тОЖ SimplePie / рдкреБрд╕реНрддрдХрд╛рд▓рдп / SimplePie / Locator.php # L384
тОЖ SimplePie / рдкреБрд╕реНрддрдХрд╛рд▓рдп / SimplePie / Locator.php # L412
тОЖ SimplePie / рдкреБрд╕реНрддрдХрд╛рд▓рдп / SimplePie / Sanitize.php # L349
тОЖ SimplePie / рдкреБрд╕реНрддрдХрд╛рд▓рдп / SimplePie.php # L1634


 $feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 

SIMPLEPIE_FILE_SOURCE_REMOTE рдХреЛ 1 рд░реВрдк SIMPLEPIE_FILE_SOURCE_REMOTE рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЗрд╕рдХреЗ рд╕рдордХрдХреНрд╖ рд╣реЛрдЧреА:


 $feed->method & (1 === 0) // => $feed->method & false 

рдирдореВрдирд╛ рдЦреЛрдЬ рдЯреЗрдореНрдкрд▓реЗрдЯ
  phpgrepред  '$ x рдФрд░ $ рдорд╛рд╕реНрдХ == $ y'
 phpgrepред  '$ x рдФрд░ $ рдорд╛рд╕реНрдХ === $ y'
 phpgrepред  '$ x рдФрд░ $ рдорд╛рд╕реНрдХ! == $ y'
 phpgrepред  '$ x & $ рдорд╛рд╕реНрдХ! = $ y'
 phpgrepред  '$ x |  $ рдорд╛рд╕реНрдХ == $ y '
 phpgrepред  '$ x |  $ рдорд╛рд╕реНрдХ === $ y '
 phpgrepред  '$ x |  $ рдореБрдЦреМрдЯрд╛! == $ y '
 phpgrepред  '$ x |  $ рдореБрдЦреМрдЯрд╛! = $ y ' 

рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдВрдЪрд╛рд▓рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, рдЖрдк PHP рдореЗрдВ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдмреНрд░ рдкрд░ рднреА рд▓реЗрдЦ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдерд╛: рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреНрд░рдо ред


рдХреНрдпрд╛ phpgrep рд╕рд╛рде рдРрд╕реА рдЬрдЧрд╣реЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдЬрд╡рд╛рдм рд╣реИ рд╣рд╛рдВ !


 phpgrep . '$_ == $_ ? $_ : $_ ? $_ : $_' phpgrep . '$_ != $_ ? $_ : $_ ? $_ : $_' 

рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд╛рдн рдХреЗ рд▓рд╛рдн


тОЖ рд╡рд┐рдХрд┐рдпрд╛ / рдРрдк / рд░рдЦрд░рдЦрд╛рд╡ / рд╡рд┐рдХрд┐рдпрд╛ / рдЕрдкрдбреЗрдЯрд╕реЗрдВрдЯрд░рд╛рд▓рдЗрдВрдЯрд░рд╡рд┐рдХреНрдХреА.inc # L95 :


 if ( preg_match( '/(wowwiki.com|wikia.com|falloutvault.com)/', $url ) ) { $local = 1; } else { $local = 0; } 

рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рд╣реИ, рд╣рдо 3 рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЧ рдХреЗ рд▓рд┐рдП URL рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдкреНрд░рддреАрдХ . рдкрд░рд┐рд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ, рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдХрд┐ falloutvault.com рдмрдЬрд╛рдп рд╣рдо рдХрд┐рд╕реА рднреА рдбреЛрдореЗрди рдкрд░ falloutvaultxcom рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



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


рдЖрдк phpgrep рдЪрд▓рд╛рдХрд░ рдРрд╕реА рдЬрдЧрд╣реЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:


 phpgrep . 'preg_match(${"pat:str"}, ${"*"})' 'pat~[^\\]\.(com|ru|net|org)\b' 

рд╣рдо рдирд╛рдорд┐рдд pat рд╕рдмрдкреИрдЯрд░реНрди рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐рд╕реА рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред


рдлрд┐рд▓реНрдЯрд░ рдХрд┐рд╕реА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдЪрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдСрдкрд░реЗрдЯрд░ рднреА рд╣реИрдВ = рдФрд░ != ред рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред


${"*"} рдХрд┐рд╕реА рднреА рддрд░реНрдХ рдХреА рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ preg_match рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред


рд╕рд░рдгреА рд╢рд╛рдмреНрджрд┐рдХ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреБрдВрдЬреА


рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ PHP рдореЗрдВ, рдЖрдкрдХреЛ рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА:


 <?php var_dump(['a' => 1, 'a' => 2]); // : array(1) {["a"]=> int(2)} 

рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ phpgrep рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:


 [${"*"}, $k => $_, ${"*"}, $k => $_, ${"*"}] 

рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: "рдПрдХ рд╕рд░рдгреА рд╢рд╛рдмреНрджрд┐рдХ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдордирдорд╛рдирд╛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рджреЛ рд╕рдорд╛рди рдХреБрдВрдЬреА рд╣реИрдВред" рднрд╛рд╡ ${"*"} рд╣рдореЗрдВ рдПрдХ "рдордирдорд╛рдирд╛ рд╕реНрдерд┐рддрд┐" рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ 0-N рддрддреНрд╡реЛрдВ рдХреЛ рдкрд╣рд▓реЗ, рдмреАрдЪ рдореЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рдХреБрдВрдЬреА рдХреЗ рдмрд╛рдж рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред


тОЖ рд╡рд┐рдХрд┐рдпрд╛ / рдРрдк / рдПрдХреНрд╕рдЯреЗрдВрд╢рди / рд╡рд┐рдХрд┐рдпрд╛ / рд╡рд┐рдХрд┐рдпрд╛рдорд┐рдиреАрдЕрдкрд▓реЛрдб / рд╡рд┐рдХрд┐рдпрд╛рдорд┐рдиреАрдЕрдкрд▓реЛрдб_рдмреЙрдбреА # рдПрдлрдкреА # рдПрд▓ реирей :


 $script_a = [ 'wmu_back' => wfMessage( 'wmu_back' )->escaped(), 'wmu_back' => wfMessage( 'wmu_back' )->escaped(), // ... ]; 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рд╕рдХрд▓ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдмрдбрд╝реЗ (100+ рддрддреНрд╡реЛрдВ) рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯрд┐рдВрдЧ рдХреБрдВрдЬрд┐рдпреЛрдВ рдиреЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдЪрд╛рдмрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рджреВрд╕рд░реЗ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд┐рдпрд╛ред




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


Phpgrep рдХреНрдпрд╛ рд╣реИ?


рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрдкрд╛рджрдХ рдФрд░ IDE рдХреЛрдб рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдкрд╛рда рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдпрд╣ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рдЬреИрд╕реЗ рд╡рд░реНрдЧ рдпрд╛ рдЪрд░ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдирд╣реАрдВ рд╣реИ) - рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, grep рдЬреИрд╕рд╛ рдХреБрдЫред


рдЖрдк " $x " рджрд░реНрдЬ рдХрд░реЗрдВ, " $x " рдвреВрдВрдвреЗрдВред рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИ, рддреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ PHP рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрднреА-рдХрднреА рдпрд╣ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдФрд░ рд╕рд░рд▓ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдХреБрдЫ рдкреНрд░рддреНрдпрдп рдХреЗ рд╕рд╛рде рдХреЛрдИ рднреА рдЪрд░ред" рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдкреНрд░рддреНрдпрдп рд╡рд╛рд▓рд╛ рдпрд╣ рдЪрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдпреМрдЧрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИрдВред


phpgrep PHP рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЯреЗрдХреНрд╕реНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд░реЗрдЧреБрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдХреЗ рд╕рд┐рдВрдЯреЗрдХреНрд╕- рдЕрд╡реЗрдпрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


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


рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд╛рдордЧреНрд░реА: рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд

рдЬрд▓реНрджреА рд╢реБрд░реВ рдХрд░реЛ


рд╕реНрдерд╛рдкрдирд╛


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


 go get -v github.com/quasilyte/phpgrep/cmd/phpgrep 

рдпрджрд┐ $GOPATH/bin рд╕рд┐рд╕реНрдЯрдо $PATH , рддреЛ phpgrep рдХрдорд╛рдВрдб рддреБрд░рдВрдд рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, -help рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:


 phpgrep -help 

рдпрджрд┐ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдЧреЛ рдиреЗ рдмрд╛рдЗрдирд░реА рдХреЛ рдХрд╣рд╛рдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ $PATH рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред


$GOPATH рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рдкреБрд░рд╛рдирд╛ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛, рднрд▓реЗ рд╣реА рд╡рд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рди рд╣реЛ:


 go env GOPATH 

рдХреЗ рдЙрдкрдпреЛрдЧ


рдПрдХ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдПрдВ hello.php рдлрд╝рд╛рдЗрд▓:


 <?php function f(...$xs) {} f(10); f(20); f(30); f($x); f(); 

phpgrep рдкрд░ phpgrep рдЪрд▓рд╛рдПрдВ:


 # phpgrep hello.php 'f(${"x:int"})' 'x!=20' hello.php:3: f(10) hello.php:5: f(30) 

рд╣рдордиреЗ рдлрд╝рдВрдХреНрд╢рди f рд▓рд┐рдП рд╕рднреА рдХреЙрд▓ рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдкрд╛рдпрд╛, рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕рдХрд╛ рдорд╛рди 20 рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред


Phpgrep рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


PHP рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, github.com/z7zmey/php-parser рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди phpgrep рдХреА рдХреБрдЫ рд╕реАрдорд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкрд╛рд░реНрд╕рд░ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреЛрд╖реНрдардХ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рд╕рд╛рд░реА рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред


phpgrep рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рд░рд▓ рд╣реИ:


  • рдПрдПрд╕рдЯреА рдЗрдирдкреБрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд▓реНрдЯрд░ рдбрд┐рд╕реЗрдмрд▓реНрдб рд╣реИрдВ;
  • рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреВрд░реНрдг рдПрдПрд╕рдЯреА рдкреЗрдбрд╝ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ;
  • рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдПрдПрд╕рдЯреА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдРрд╕реЗ рдЙрдкрдкреНрд░рдХрд╛рд░ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ;
  • рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдПрдХ рд╕реВрдЪреА рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИ;
  • рд╕рднреА рдкрд░рд┐рдгрд╛рдо рдЬреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд╛рд╕ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рд╕реНрдХреНрд░реАрди рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдпрд╣ рд╣реИ рдХрд┐ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдПрдПрд╕рдЯреА рдиреЛрдбреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдХрднреА-рдХрднреА рддреБрдЪреНрдЫ: рдПрдХ-рд╕реЗ-рдПрдХ, рдФрд░ рдореЗрдЯрд╛-рдиреЛрдбреНрд╕ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрдЯрд╛ рдиреЛрдбреНрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг ${"*"} рдФрд░ ${"str"} ред


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


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


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


рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдпрд╣ рдЙрдкрдХрд░рдг рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрджрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдЙрдкрд░реЛрдХреНрдд SSR рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рднреА рдЕрдЪреНрдЫрд╛ рд╣реИред




рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА


рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдЯрд░реНрди рдХреА рдкреВрд░реА рд╕реВрдЪреА pattern.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдЧреЗ, рдЖрдк phpgrep-lint.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде phpgrep рдХреЗ рд▓реЙрдиреНрдЪ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред


рд▓реЗрдЦ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╕рднреА рдирд╛рдорд┐рдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рдХреЗ рдФрд░ рдЙрди рдкрд░ phpgrep-lint.sh рдЪрд▓рд╛рдХрд░ рдкреНрд░рдпреЛрдЧ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


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


 #  "x != y || x != z": phpgrep . '$x != $a || $x != $b' phpgrep . '$x !== $a || $x != $b' phpgrep . '$x != $a || $x !== $b' phpgrep . '$x !== $a || $x !== $b' 

рдЖрдкрдХреЛ phpgrep рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рднреА рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ : рд╡рд╛рдХреНрдп рд░рдЪрдирд╛-рдЬрд╛рдЧрд░реВрдХ рдХреЛрдб рдЦреЛрдЬ ред


рд▓реЗрдЦ рдЧреЛрдлрд░ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЧреЛрдлрд░рдХреЛрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдереАрдВ ред

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


All Articles