рдлрд╛рд▓реНрдХрди 1.2.0 рд░рд┐рд▓реАрдЬ



рд╣рдореЗрдВ рдлрд╛рд▓реНрдХрди рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░рд┐рд▓реАрдЬ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ ред

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

рдирд╡рд╛рдЪрд╛рд░ рдлрд╛рд▓реНрдХрди 1.2.0:
  1. рд╕рдВрдХрд▓рд┐рдд рд╡реЛрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдкрде
  2. рдПрдореНрдкрд╛рд╡реЗрдЯрд┐рдВрдЧ рд╡реЛрд▓реНрдЯ
  3. рдлрд╛рд▓реНрдХрди \ Mvc \ Url рдореЗрдВ рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкрде рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ
  4. рдлрд╛рд▓реНрдХрди \ Mvc \ View \ Simple
  5. JSON рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд╛рдо
  6. ORM рдореЗрдВ рдХрдИ-рд╕реЗ-рдХрдИ рд╕рдорд░реНрдерди
  7. рдЖрднрд╛рд╕реА рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛
  8. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди
  9. PHQL рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ (рд╕рд╛рд╣рд┐рддреНрдп) рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛
  10. рдПрдиреНрд╣рд╛рдВрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рднрд╛рдЧ
  11. рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╛рд▓реНрдХрди \ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
  12. рд╡реЛрд▓реНрдЯ рдореЗрдВ рдореИрдХреНрд░реЛрдЬрд╝
  13. рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп BadMethodCallException
  14. рдбрд┐рдмрдЧ рдШрдЯрдХ

рдбрд╛рдЙрдирд▓реЛрдб
рдирдпрд╛ рдЖрджрд░реНрд╢ рд╡рд╛рдХреНрдп
рдзрдиреНрдпрд╡рд╛рдж


рддреЛ, рдлрд╛рд▓реНрдХрди 1.2.0 рдореЗрдВ рдХреНрдпрд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛



1. рд╕рдВрдХрд▓рд┐рдд рд╡реЛрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдкрде

рд╡реЛрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ "рд╕рдВрдХрд▓рд┐рдд" рд╡рд┐рдХрд▓реНрдк рдЕрдм рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреИрд╢ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
//   .php    $volt->setOptions([ 'compiledPath' => function($templatePath) { return $templatePath . '.php'; } ]); // тАЛ тАЛ     $volt->setOptions([ 'compiledPath' => function($templatePath) { $dirName = dirname($templatePath); if (!is_dir(CACHE_DIR . $dirName)) { mkdir(CACHE_DIR . $dirName,0755,true); } return CACHE_DIR . $dirName . '/'. $templatePath . '.php'; } ]); 


2. рд╕рд╢рдХреНрддрд┐рдХрд░рдг рд╡реЛрд▓реНрдЯ

рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП, рдЕрдм рдЖрдк рдХрд┐рд╕реА рднреА рдЖрд╡рд╢реНрдпрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдСрдкрд░реЗрдЯрд░ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджреА рдЧрдИ рд╢реНрд░реЗрдгреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдХрд┐рд╕реА рднреА php рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:
 class PhpFunctionExtension { public function compileFunction($name, $arguments) { if (function_exists($name)) { return $name . '('. $arguments . ')'; } } } 

рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
 $volt->getCompiler()->addExtension(new PHPFunctionExtension()); 


3. рдлрд╛рд▓реНрдХрди \ Mvc \ Url рдореЗрдВ рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкрде рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ

рдЕрдм рдЖрдк рд╕реНрдереИрддрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, js рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдПред рд╕реАрдбреАрдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдЧреАред
 $di['url'] = function() { $url = new Phalcon\Mvc\Url(); // тАЛ  URI  mod-rewrite $url->setBaseUri('/index.php?_url='); // тАЛ тАЛ URI  CSS/Javascript/Images $url->setStaticUri('/static/'); return $url; }; 


4. рдлрд╛рд▓реНрдХрди \ Mvc \ View \ Simple

рдШрдЯрдХ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛, рдлрд╛рд▓реНрдХрди \ Mvc \ View рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рд╣реИред рдпрд╣ рдорд╛рдЗрдХреНрд░реЛ-рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрднреНрдпрд╛рд╡реЗрджрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдЧрд╛ред
 // тАЛ тАЛView service $di['view'] = function() { $view = new Phalcon\Mvc\View\Simple(); $view->setViewsDir(APP_PATH . '/views/'); return $view; }; 

рд╕реВрдХреНрд╖реНрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
 $app->map('/login', function() use ($app) { echo $app->view->render('security/login', array( 'form' => new LoginForm(), )); }); 

рдШрдЯрдХ рд╡рд┐рднрд┐рдиреНрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

5. JSON рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд╛рдо

JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рднреЗрдЬрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред Phalcon \ Http \ Response рдкрд░ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗ:
 $app->post('/api/robots', function() use ($app) { $data = $app->request->getJsonRawBody(); $robot = new Robots(); $robot->name = $data->name; $robot->type = $data->type; $response = new Phalcon\Http\Response(); //    if ($robot->success() == true) { $response->setJsonContent([ 'status' => 'OK', 'id' => $robot->id ]); } else { //   HTTP  $response->setStatusCode(500, "Internal Error"); $response->setJsonContent([ 'status' => 'ERROR', 'messages' => $status->getMessages() ]); } return $response; }); 


6. ORM рдореЗрдВ рдХрдИ-рдХрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рд╣рдорд╛рд░реЗ ORM рдиреЗ рдХрдИ-рдХрдИ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рддреАрд╕рд░реЗ рдореЙрдбрд▓, рдордзреНрдпрд╡рд░реНрддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рджреЛ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рд╕реАрдзрд╛ рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
 class Artists extends Phalcon\Mvc\Model { public $id; public $name; public function initialize() { $this->hasManyToMany( 'id', 'ArtistsSongs', 'artists_id', 'songs_id', 'Songs', 'id' ); } } 

рдХрд▓рд╛рдХрд╛рд░ рдЧреАрддреЛрдВ рдХреЛ рд░рд┐рд╢реНрддреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 $artist = Artists::findFirst(); //     foreach ($artist->songs as $song) { echo $song->name; } 

рдЖрдк PHQL рдореЗрдВ рдХрдИ-рд╕реЗ-рдХрдИ рд░рд┐рд╢реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ SQL рдкрд░ рдПрдХ рдРрдб-рдСрди рд╣реИ рдЬреЛ рдореЙрдбрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ sql рдХреНрд╡реЗрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ):
 $phql = 'SELECT Artists.name, Songs.name FROM Artists JOIN Songs WHERE Artists.genre = "Trip-Hop"'; $result = $this->modelsManager->query($phql); 

рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╕рдордп рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рддреБрд░рдВрдд рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдордзреНрдпрд╡рд░реНрддреА рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рд░рд┐рдХреЙрд░реНрдб рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ:
 $songs = array() $song = new Song(); $song->name = 'Get Lucky'; $songs[] = $song; $song = new Song(); $song->name = 'Instant Crush'; $songs[] = $song; $artist = new Artists(); $artist->name = 'Daft Punk'; $artist->songs = $songs; //    $artist->save(); 


7. рдЖрднрд╛рд╕реА рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

рдпрджрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдореБрдЦреНрдп рд░рд┐рдХреЙрд░реНрдб рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рдЖрд╢реНрд░рд┐рдд рддрддреНрд╡ рднреА рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:
 use Phalcon\Mvc\Model Phalcon\Mvc\Model\Relation; class Artists extends Model { public $id; public $name; public function initialize() { $this->hasMany('id', 'Songs', 'artists_id', [ 'foreignKey' => [ 'action' => Relation::ACTION_CASCADE ] ]); } } 

рдЬрдм рдЖрдк рдХрд┐рд╕реА рдХрд▓рд╛рдХрд╛рд░ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕рдХреЗ рд╕рднреА рдЧрд╛рдиреЗ рднреА рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:
 $artist = Artists::findFirst(); $artist->delete(); //     


8. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди

рд╣рдордиреЗ рдлрд╛рд▓реНрдХрди \ рдПрд╕реЗрдЯреНрд╕ рдШрдЯрдХ рдХреЛ рди рдХреЗрд╡рд▓ рд▓рдЪреАрд▓реЗ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ, рд╕рдореВрд╣ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдпрд╛, рдмрд▓реНрдХрд┐ рдЬреЗрдПрд╕ / рд╕реАрдПрд╕рдПрд╕ (рдЫреЛрдЯрд╛) рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рд┐рдЦрд╛рдпрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд░рдпрд╛рди рдбреЗ рдХреЗ рдбрдЧрд▓рд╕ рдХреНрд░реЙрдХрдлреЛрд░реНрдб рдФрд░ CSSMin рд╕реЗ Jsmin рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
 $manager = new Phalcon\Assets\Manager(array( 'sourceBasePath' => './js/', 'targetBasePath' => './js/production/' )); $manager //  Javascripts     ->collection('jsFooter') //     ->setTargetPath('final.js') //    ->setTargetUri('production/final.js') //    ,    ->addJs('code.jquery.com/jquery-1.10.0.min.js', true, false) //       ->addJs('common-functions.js') ->addJs('page-functions.js') //       ( final.js ) ->join(true) //    Jsmin ->addFilter(new Phalcon\Assets\Filters\Jsmin()) //   ,    ->addFilter(new MyApp\Assets\Filters\LicenseStamper()); $manager->outputJs(); 


9. PHQL рдореЗрдВ рдЪрд░ (рд╢рд╛рдмреНрджрд┐рдХ) рдХрд╛ рдирд┐рд╖реЗрдз

рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдм PHQL рдХреЗ рдЕрдВрджрд░ рд╕реАрдзреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛:
 $artist = Artists::findFirst("name = '$name'"); 


10. рдПрдиреНрд╣рд╛рдВрд╕ рдХрд┐рдпрд╛ рд╣реБрдЖ рднрд╛рдЧ

рдбреЗрд╡рд▓рдкрд░ рдЕрдм рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░рдгреА рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
 <?php $this->partial('footer', ['links' => $myLinks]); 

рд╡реЛрд▓реНрдЯ рднреА рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
 {{ partial('footer', ['links': myLinks]) }} {% include 'footer' with ['links': myLinks] %} 


11. рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╛рд▓реНрдХрди \ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╣рдо рдзреНрдпрд╛рди рд╕реЗ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪ рд░рд╣реЗ рд╣реИрдВ, рд╡реЗ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдлрд╛рд▓реНрдХрди \ рдЯреИрдЧ рдШрдЯрдХ рдЕрдм DI \ FactoryDefault рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдмрдЬрд╛рдп:
 Phalcon\Tag is now a service in DI\FactoryDefaultтАЛ. So instead of doing this: 

рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд╛рдпрдХ:
 $this->tag->setDefault('name', $robot->name); 


12. рд╡реЛрд▓реНрдЯ рдореЗрдВ рдореИрдХреНрд░реЛрдЬрд╝

рдореИрдХреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЕрднреА рд╢реБрд░реВ рд╣реБрдЖ рд╣реИ, рддрдм рдФрд░ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛:
 {%- macro input_text(name, attributes=null) -%} {{- '<input type="' ~ name ~ '" ' -}} {%- for key, value in attributes -%} {{- key ~ '="' ~ value|e '"' -}} {%- endfor -%} {{- '/>' -}} {%- endmacro -%} {{ input_text("telephone", ['placeholder': 'Type telephone']) }} 


13. рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрдЬрд╛рдп BadMethodCallException

рд╕рдВрд╕реНрдХрд░рдг 1.1.0 рд╕реЗ рдкрд╣рд▓реЗ, рддрд░реАрдХреЛрдВ рдХреА рдПрдХ рдЧрд▓рдд рд╕рдВрдЦреНрдпрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реБрдИред рд╕рдВрд╕реНрдХрд░рдг 1.2.0 рд╕реЗ рд╢реБрд░реВ, рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ BadMethodCallException рдЕрдкрд╡рд╛рдж рдХреЛ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╣реА рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
 <?php $e = new Phalcon\Escaper(); $e->escapeCss('a {}', 1, 2, 3); 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 Fatal error: Uncaught exception 'BadMethodCallException' with message 'Wrong number of parameters' in test.php:4 Stack trace: #0 test.php(4): Phalcon\Escaper->escapeCss('a {}', 1, 2, 3) #1 {main} 


14. рдбрд┐рдмрдЧ рдШрдЯрдХ

рдлрд╛рд▓реНрдХрди \ рдбреАрдмрдЧ рдШрдЯрдХ рдбрд┐рдмрдЧ рд╕реНрдЯреИрдХ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрд╣рд╛рдВ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрд┐рдд рд╣реИред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рд╛рд░рдВрдн рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрд╢рд┐рд╢ / рдХреИрдЪ рдмреНрд▓реЙрдХ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
 (new Phalcon\Debug)->listen(); 

рд╣рдордиреЗ рдШрдЯрдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреЗрдВрдЪ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛:


рдХреБрдЫ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░ рд╣реИрдВ:

рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА CHANGELOG рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдбрд╛рдЙрдирд▓реЛрдб


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

рдирдпрд╛ рдЖрджрд░реНрд╢ рд╡рд╛рдХреНрдп


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

рдзрдиреНрдпрд╡рд╛рдж


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

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


All Articles