PHPLego: рд╡рд┐рдиреАрдд AJAX





рдирдорд╕реНрдХрд╛рд░ рдкреНрд░рд┐рдп рд╣реЗрдмреНрд░рддрдЪрд┐рдЯреЗрд▓!



рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рд╕реЛрдЪрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдХреНрд╖рдо рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд┐рдирд╛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧреА? рддрд╛рдХрд┐, рдпрджрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдХреНрд╖рдо рд╣реЛ, рд╕рд╛рдЗрдЯ рдмреНрд▓реЙрдХ 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 рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдкрдиреЗ рд▓реЗрдЧреЛ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рд┐рдЦреЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╣реИ :)



All Articles