![](http://2page.ru/_storage/2010_12_07__00_16_29__0.59913600.png)
рдирдорд╕реНрдХрд╛рд░ рдкреНрд░рд┐рдп рд╣реЗрдмреНрд░рддрдЪрд┐рдЯреЗрд▓!
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рд╕реЛрдЪрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдХреНрд╖рдо рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд┐рдирд╛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧреА? рддрд╛рдХрд┐, рдпрджрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдХреНрд╖рдо рд╣реЛ, рд╕рд╛рдЗрдЯ рдмреНрд▓реЙрдХ AJAX- рд╕реЛрдо рдХреЗ рд╕рд╛рде рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реЛ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдирдП рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд░рдордг рдерд╛?
рд╣рдореНрдо ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдореИрдВ рд╕рд╛рде рдЖрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдмрд╛рдз рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЗ рд╕рд╛рд░ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред
рдЕрдкрдиреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрди рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рддреИрдпрд╛рд░ рдХрд┐рдпрд╛:
- рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рд╕рд╛рдЗрдЯ рдХреЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рдирд┐рдпрдорд┐рдд рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА onclick = "..." рдХреЗред
- рдЬрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рд╛рдЗрдЯ рдХреЗрд╡рд▓ рдкреГрд╖реНрда рдХреЗ рдЙрдирдХреЗ рдХреНрд╖реЗрддреНрд░ (рдЙрдирдХреА div) рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рддреА рд╣реИред рдЬрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд▓рд┐рдХ-рдереНрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд▓рд┐рдВрдХ $ ("a") рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВрдбрд▓рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд▓рд┐рдХ (...), рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдкреГрд╖реНрда рддрддреНрд╡реЛрдВ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рд░рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдХреНрд╖рдо рд╣реИ, рддреЛ рдпрд╣ рд╣реИрдВрдбрд▓рд░ рдмрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдЗрдЯ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИред
- рдЬрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрдм рдкреЛрд╕реНрдЯрд┐рдВрдЧ рдлреЙрд░реНрдо рдХреЗрд╡рд▓ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдлреЙрд░реНрдо рд╕реНрдерд┐рдд рд╣реИред рдЕрдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░, рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
- рдкреЗрдЬ рдХреЗ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП AJAX рдкреНрд░реАрд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ "рдиреЙрдЬреИрдХреНрд╕" рд╡рд░реНрдЧ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдХреЗред рдпрд╣ рддрдм рд╣реИ, рдЬрдм рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреГрд╖реНрда рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡реЗ рд╕рднреА рд╡рд┐рднрд┐рдиреНрди рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╣реИред рдпрд╣ рдФрд░ рддреЗрдЬ рд╣реЛрдЧрд╛ред
- рд▓рд┐рдВрдХ рдмреНрд▓реЙрдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдЕрдзрд┐рднрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рди рд▓реАрдЬрд┐рдП рдЕрдЧрд░ рд╣рдореЗрдВ рди рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдмреНрд▓реЙрдХ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдореВрд▓ рдмреНрд▓реЙрдХ рднреАред
- рдпрджрд┐ рдмреНрд▓реЙрдХ рдкрд╣рд▓реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕реЗ рдХреИрд╢ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреНрд░реИрдлрд╝рд┐рдХ рди рдЪрд▓рд╛рдПрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЛ рддрдирд╛рд╡ рди рджреЗрдВред
- рдпрджрд┐ рдХреИрд╢ рд╕реЗ рдмреНрд▓реЙрдХ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдмреНрд▓реЙрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред
- рдХреЛрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реА рдирд┐рдЬреА рд░рд╛рдп рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓реЗрдЦрди рд╕реЗ рдирдлрд░рдд рд╣реИред рддреЛ рдореИрдВрдиреЗ рдПрдХ рдФрд░ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рд╛ред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдкреНрд░рддрд┐ рдореЙрдбреНрдпреВрд▓ рдПрдХ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдлреЙрд░реНрдо рдореЗрдВ рдХреБрдЫ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП)ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк, рдкреНрд░рд┐рдп рд╣реИрдмреНрд░реЗрдЯрд╛рдЯ рдХреИрд╕реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ, рдЖрдкрдХреА рдорд╛рдБ, рдмрд▓реНрдХрд┐ рдЕрдкрдиреА рдЖрддреНрдорд╛ рдХреЛ рд╢реИрддрд╛рди рдХреЛ рдмреЗрдЪ рджреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рд╕рднреА рдХрд┐рд╕реНрдореЛрдВ рдореЗрдВ рдЕрдкрдирд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрдмреНрдпреВ рдХрд░реВрдВрдЧрд╛ред
рдЦреИрд░, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рдЗрдЪреНрдЫрд╛рдПрдВ рд╣реИрдВред рддреЛ, рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ...
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ? рдРрд╕рд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреБрдХреАрдЬрд╝ рдореЗрдВ, $ _SESSION рдЪрд░ рдореЗрдВ, $ _GET рд╕рд░рдгреА рдореЗрдВ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ? рдореИрдВрдиреЗ рдкрддрд╛ рдмрд╛рд░ рдЪреБрдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдПрдХ рджреЛрд╕реНрдд рдХреЛ рдПрдХ рд▓рд┐рдВрдХ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╡рд╣ рд╡рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдо рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЬреАрдИрдЯреА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА GET рд▓рд╛рдЗрди рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕реЗ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдкрд░ рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреА рд╣реИред
рдореИрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рд▓реЗрдЧреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ PHP рднрд╛рд╖рд╛ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
$lego = new MyLego('my_name'); // - // . run() GET- : $lego->run(); echo $lego->getOutput(); // Lego-
рдЖрдЗрдП рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрддрд╛ рдмрд╛рд░ рд╕реЗ рдЗрд╕рдХреЗ рдЪрд░ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ, рдЬреЛ рдпрд╣ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдХрд┐рд╕ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╡рд╣ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдЪрд░ рд╕реЗ рд▓реЗ рд▓реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХреНрд░рд┐рдпрд╛рдПрдВ рдЖрдорддреМрд░ рдкрд░ рд╕рд┐рд░реНрдл рдЙрд╕реА рддрд░рд╣ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдХреБрдЫ рдбреЗрдЯрд╛ рдкрд░ - рдлреЛрдЯреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдЯрд┐рдкреНрдкрдгреА, рдЖрджрд┐ред
рдФрд░ рдпрд╣ рднреА рдорд╛рди рд▓реЗрдВ рдХрд┐ рдкрддрд╛ рдмрд╛рд░ рдлреЙрд░реНрдо рдХрд╛ рд╣реИ:
// http://example.ru/?my_name[act]=index&my_name[0]=1&my_name[1]=abc
рдпрд╣ рд▓реЗрдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ () рд╡рд┐рдзрд┐ рдХреЛ my_name рдирд╛рдо рд╕реЗ рдкреБрдХрд╛рд░реЗрдЧрд╛, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рджреЛ рддрд░реНрдХ - '1' рдФрд░ 'abc'ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЖрдкрдХреЗ рд╕рд╛рде рдРрд╕реА рд╡рд╕реНрддреБрдПрдВ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рдирдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рд╕реЗ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрд╕рд░реНрдЧ рдореЗрдВ рджреЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ_ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рддрд╛рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдХрд┐рд╕реА рднреА рд╕рд┐рд╕реНрдЯрдо рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рди рдХрд░ рд╕рдХреЗ рдФрд░ рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛ рд╕рдХреЗред
рд▓реЗрдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЗрд╕реЗ рдПрдХ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд░рдЦреЗрдВред рдЗрд╕реЗ рд▓реЗрдЧреЛ рдХрд╣рддреЗ рд╣реИрдВред рдФрд░ рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдВрдЧреЗред
abstract class Lego{ private $name; private $output; public function __construct($name = false){ // , if(!$name) $name = get_class($this); $this->name = $name; } public function getName(){ return $this->name; } public function getOutput(){ return $this->output; } public function run(){ $action = $this->getAction(); // , , action_ $method_name = 'action_'.$act; if(method_exists($this, $method_name)){ // , GET !!! // , , $this->output $this->output = call_user_func_array( array( $this, $method_name ), $this->getActionParams($action)); } else $this->output = "method {$action} does't exists"; // AJAX. ajax={_} if($this->_get("ajax") == $this->getName()){ echo $this->output; // die; // . } } // ( my_name[act]=index); public function getAction(){ $lego_params = $this->getLegoParams(); if(!is_array($lego_params)) return; if(isset($lego_params["act"])) return $lego_params["act"]; return "default"; // , GET } // , Lego public function getLegoParams($lego_name = false){ if(!$lego_name) $lego_name = $this->getName(); return $this->_get($lego_name, array()); } // ( &my_name[0]=1&my_name[1]=abc); public function getActionParams($action){ $lego_params = $this->getLegoParams(); if(!isset($lego_params[$action])) return array(); if(!is_array($lego_params[$action])) return array(); return $lego_params[$action]; } // , GET static public function _get($key_name, $default_value = false){ return self::__get_from_array($_GET, $key_name, $default_value); } // , , static private function __get_from_array($array, $key_name, $default_value = false){ if(!isset($array[$key_name])) return $default_value; return $array[$key_name]; } }
рдЕрдм, рдХреЛрдИ рд▓реЗрдЧреЛ рдореЙрдбреНрдпреВрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
class FotoLego extends Lego{ // http://example.ru/?{lego_name}[act]=allfotos public function action_allfotos(){ $out = " "; return $out; } // http://example.ru/?{lego_name}[act]=onefoto&{lego_name}[0]={id_} public function action_onefoto($foto_id){ $out = " id=$foto_id"; return $out; } // http://example.ru/?{lego_name}[act]=bestfotos public function action_bestfotos(){ $out = " "; return $out; } }
рдФрд░ рдпрд╣ рднреА, рдпрд╣ рдирд┐рдХрд▓рд╛ рдХрд┐ рдПрдХ рд▓реЗрдЧреЛ-рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдИ рд▓реЗрдЧреЛ-рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
class SomeLego extends Lego{ .... .... public function action_someMethod(){ // Lego- $lego = new SomeSublego("sublego_name1"); $lego->run(); // return $lego->getOutput(); // } public function action_someMethodElse(){ // Lego- $lego = new SomeSublegoElse("sublegoelse_name1"); $lego->run(); // , , Lego : Smarty::assign("content", $lego->getOutput()); return Smarty::fetch("some_template.tpl"); // } .... .... }
рдФрд░ рдХреЗрд╡рд▓ рд╡рд╛рдВрдЫрд┐рдд рд▓реЗрдЧреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ ajax рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛
// : // http://example.ru/?LegoSite=fotos&ajax={______} // Lego::run(),
рдареАрдХ рд╣реИ, рдЖрдк рдХрд┐рд╕реА рднреА AJAX рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдПрдХ рд╕рд╛рдЗрдЯ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ
рд╣рдо рдореВрд▓ рд▓реЗрдЧреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╡рд░реНрдЧ рдХрд╛ рд╡рд░реНрдгрди рд╕реНрд╡рдпрдВ рдХрд░рддреЗ рд╣реИрдВ:
class LegoSite extends Lego{ // public function action_default(){ //? Default , // : $lego = new LegoAuth(); $lego->run(); // Smarty::assign("auth_block", $lego->getOutput()); // LegoAuth // : $lego = new LegoHotNews(); $lego->run(); // Smarty::assign("hotnews_block", $lego->getOutput()); // LegoHotNews // , , : $lego = new LegoArticles(); $lego->run(); // Smarty::assign("articles_block", $lego->getOutput()); // LegoArticles // -: Smarty::fetch("body.tpl"); // } // " ". public function action_about(){ return Smarty::fetch("about_site.tpl"); // } }
рд╣рдорд╛рд░реА рдкреВрд░реА рд╕рд╛рдЗрдЯ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреА - index.php:
include ".common/autoload.php"; // $lego = new LegoSite(); // $lego->run(); // echo $lego->getOutput();// !
рдмрд╕ рдЗрддрдирд╛ рд╣реА, рд╕рд╛рдЗрдЯ рддреИрдпрд╛рд░ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ (рдЖрдк рдЦреБрдж) рдХреЛ рд╕рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ рдФрд░, рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк, рдереЛрдбрд╝рд╛ рдЬреАрд╡рди рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ jQuery рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реИред
Jquery.lego.js рдлрд╝рд╛рдЗрд▓:
// , jQuery.fn.lego.load = function(lego_name, url, data, nocache){ jQuery.fn.lego.lastLoadedUrl = urldecode(url); jQuery.fn.lego.loadedUrls[lego_name] = urldecode(url); var lego = $("div.lego[name="+lego_name+"]"); lego.addClass("loading"); var pellicle = $("<div>"); // , pellicle.addClass('pellicle'); $(".lego[name="+lego_name+"]").prepend(pellicle); var no_ajax_url = jQuery.fn.lego.getNoAjaxUrl(url); // - , if($(".lego[name="+lego_name+"]").length != 1){ document.location = no_ajax_url; return; } location.hash = url; // // var from_cache = LegoCache.get(lego_name, url); if(from_cache && data == null && !nocache){ // $(".lego[name="+lego_name+"]").replaceWith(from_cache); return; } $.ajax({ type: data == null ? "GET" : "POST", url: url, data: data, success: function(received){ $().lego.log(", : "+received.length+" "+lego_name+"..."); if($(received).hasClass('lego')){ $(".lego[name="+lego_name+"]").replaceWith(received); // LegoCache.put(lego_name, url, received); } else{ $().lego.log(lego_name+": Lego: "+url); document.location = no_ajax_url; } }, error: function(x){ $().lego.log(" url: "+url); } }); } jQuery.fn.lego.ajaxEnable = function(selector){ jQuery.fn.lego.startProcessHash(); if(!selector) selector = ""; // $(selector+":not(.noajax) a:not(.noajax)").live("click.myEvent", function(e){ var href = $(e.currentTarget).attr("href"); // if(href.match(/^(http(s)?:\/\/)|(javascript)/i)) return true; var name = $(e.currentTarget).lego().attr("name"); var legotarget = $(e.currentTarget).attr("legotarget"); if(typeof legotarget == "undefined") legotarget = name; var ajax_url = jQuery.fn.lego.getAjaxUrl(href, legotarget); jQuery.fn.lego.load(legotarget, ajax_url); return false; }); // $("form:not(.noajax)").livequery("submit", function(e){ var name = $(this).lego().attr("name"); var legotarget = $(this).attr("legotarget"); if(typeof legotarget == "undefined") legotarget = name; jQuery.fn.lego.load(legotarget, $().lego.getAjaxUrl($(this).attr("action"), legotarget), $(this).serialize()); return false; }); } // var LegoCache = { cache: {}, put: function(lego_name, url, data){ this.cache[lego_name+url] = data; }, get: function(lego_name, url, data){ if(typeof this.cache[lego_name+url] != 'undefined'){ var ret = $(this.cache[lego_name+url]); var reload_block = $("<a href='javascript:void(0)' onclick='jQuery.fn.lego.reload(this)' />"); reload_block.html(" , "); reload_block.addClass('reload_block'); try{ ret.prepend(reload_block); }catch(e){} return ret; } } }
рдмреЗрд╢рдХ, рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рдЫреЛрдЯреЗ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдЦрд░рд╛рдм рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╡реЗ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреА рд╕реЗрд╡рд╛ рдореЗрдВ рдПрд╕рд╡реАрдПрди рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВред
рд╕реНрд░реЛрдд рдХреЛрдб PHPLego рдХрд╛ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдЖрдк Google рдХреЛрдб рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
code.google.com/p/phplego
рд╡рд╣рд╛рдВ рдЖрдк рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред
рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдХрд╛рдо рдЖрдПрдЧрд╛ред рд╣рдореЗрд╢рд╛ рддреБрдореНрд╣рд╛рд░рд╛, рдЬреЛрдЬрд╝рд┐рдХред
PS рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдкрдиреЗ рд▓реЗрдЧреЛ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рд┐рдЦреЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╣реИ :)