
рд╣рдореЗрдВ
рдлрд╛рд▓реНрдХрди рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░рд┐рд▓реАрдЬ рдХреА
рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП рдЦреБрд╢реА
рд╣реЛ рд░рд╣реА
рд╣реИ ред
рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рдиреЗ рдореЗрдВ рджреЛ рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реИ, рдФрд░ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рд╕реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП
рд╕рдмрд╕реЗ рддреЗрдЬрд╝ PHP рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдФрд░ рд╕рдмрд╕реЗ рдЧрдВрднреАрд░ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИред
рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рдмрдЧ рдлрд┐рдХреНрд╕ рдФрд░ рдЕрдиреБрдХреВрд▓рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рдордиреЗ рд╕рд╛рдЗрдЯ рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдкреАрдЖрдИ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдФрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ рдЕрдкрдбреЗрдЯ рдХреА рддреИрдпрд╛рд░реА рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдирд╡рд╛рдЪрд╛рд░ рдлрд╛рд▓реНрдХрди 1.2.0:
- рд╕рдВрдХрд▓рд┐рдд рд╡реЛрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдкрде
- рдПрдореНрдкрд╛рд╡реЗрдЯрд┐рдВрдЧ рд╡реЛрд▓реНрдЯ
- рдлрд╛рд▓реНрдХрди \ Mvc \ Url рдореЗрдВ рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкрде рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ
- рдлрд╛рд▓реНрдХрди \ Mvc \ View \ Simple
- JSON рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд╛рдо
- ORM рдореЗрдВ рдХрдИ-рд╕реЗ-рдХрдИ рд╕рдорд░реНрдерди
- рдЖрднрд╛рд╕реА рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди
- PHQL рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ (рд╕рд╛рд╣рд┐рддреНрдп) рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛
- рдПрдиреНрд╣рд╛рдВрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рднрд╛рдЧ
- рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╛рд▓реНрдХрди \ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- рд╡реЛрд▓реНрдЯ рдореЗрдВ рдореИрдХреНрд░реЛрдЬрд╝
- рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп BadMethodCallException
- рдбрд┐рдмрдЧ рдШрдЯрдХ
рдбрд╛рдЙрдирд▓реЛрдбрдирдпрд╛ рдЖрджрд░реНрд╢ рд╡рд╛рдХреНрдпрдзрдиреНрдпрд╡рд╛рджрддреЛ, рдлрд╛рд▓реНрдХрди 1.2.0 рдореЗрдВ рдХреНрдпрд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
1. рд╕рдВрдХрд▓рд┐рдд рд╡реЛрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдкрде
рд╡реЛрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ "рд╕рдВрдХрд▓рд┐рдд" рд╡рд┐рдХрд▓реНрдк рдЕрдм рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреИрд╢ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
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();
4. рдлрд╛рд▓реНрдХрди \ Mvc \ View \ Simple
рдШрдЯрдХ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛, рдлрд╛рд▓реНрдХрди \ Mvc \ 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();
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();
рдЖрдк 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;
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
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:
14. рдбрд┐рдмрдЧ рдШрдЯрдХ
рдлрд╛рд▓реНрдХрди \ рдбреАрдмрдЧ рдШрдЯрдХ рдбрд┐рдмрдЧ рд╕реНрдЯреИрдХ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрд╣рд╛рдВ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрд┐рдд рд╣реИред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рд╛рд░рдВрдн рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрд╢рд┐рд╢ / рдХреИрдЪ рдмреНрд▓реЙрдХ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
(new Phalcon\Debug)->listen();
рд╣рдордиреЗ рдШрдЯрдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреЗрдВрдЪ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛:
рдХреБрдЫ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░ рд╣реИрдВ:
- рдлрд╛рд▓реНрдХрди \ рдбреАрдмреА рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рдВрд╕, рдорд▓реНрдЯреАрдкрд▓ рдЬреЙрдЗрди рдХреЗ рд▓рд┐рдП рд╕рдкреЛрд░реНрдЯ
- рдХреИрд╢ / рдПрдиреЛрдЯреЗрд╢рди / ORM-рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП XCache / Igbinary Cache рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди
- PHP 5.5 рд╕рдорд░реНрдерди
- рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЕрдиреБрдХреВрд▓рди
рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА
CHANGELOG рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдбрд╛рдЙрдирд▓реЛрдб
рдЖрдк
GitHub рдкрд░ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░
DLLs рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ
рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдмрд┐рд▓реНрдб рднреА рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдкреНрд░рд▓реЗрдЦрди рднреА рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдирдпрд╛ рдЖрджрд░реНрд╢ рд╡рд╛рдХреНрдп
рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╣рдордиреЗ рдЖрджрд░реНрд╢ рд╡рд╛рдХреНрдп "рд╕рдмрд╕реЗ рддреЗрдЬрд╝ PHP рдлреНрд░реЗрдорд╡рд░реНрдХ" рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд┐рдпрд╛, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд┐рдпрд╛ рдФрд░ рдлрд╛рд▓реНрдХрди рдХреЛ рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рд╕реЗ рдЪрд╛рд▓реВ рд░рдЦрд╛ред рд╣рдордиреЗ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдХреЛ рдмрдЪрд╛рдиреЗ рдФрд░ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЕрд╡рд╕рд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣рдо рд╕рдм рдХреБрдЫ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЧрддрд┐ рд╣рдорд╛рд░реА рдПрдХрдорд╛рддреНрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рддрдХ, рд╣рдордиреЗ рдлрд╛рд▓реНрдХрди рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЗрд╕рдореЗрдВ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ред рдЗрд╕рдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рдмрд╕реЗ рддреЗрдЬ рдФрд░ рд╕рдмрд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдУрдкрди рд╕реЛрд░реНрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред
рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдЕрдкрдиреЗ рдЖрджрд░реНрд╢ рд╡рд╛рдХреНрдп рдХреЛ рдмреЗрд╣рддрд░ рд╕реНрдерд┐рддрд┐ рдлрд╛рд▓реНрдХрди рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рдВрд╕реНрдХрд░рдг 1.2.0 рдХреЗ рдмрд╛рдж рд╕реЗ, рд╣рдо рдирд╛рд░рд╛ "рдЧрддрд┐ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдВрддреБрд▓рди" рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдкреНрд░рд╛рдердорд┐рдХ рд▓рдХреНрд╖реНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдЧрддрд┐ рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмреАрдЪ рдЗрд╖реНрдЯрддрдо рд╕рдВрддреБрд▓рди рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реИред рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреАрдПрдЪрдкреА рдХреЗ рд▓рд┐рдП рди рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдврд╛рдВрдЪрд╛ рдмрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЧрддрд┐ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рднреА рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж
рд╣рдо рд╕рднреА рд╕рдореБрджрд╛рдп рдХреЗ рд╕рджрд╕реНрдпреЛрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдЬреЛ рднреА рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рд╕рднреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЬреЛ рдлрд╛рд▓реНрдХрди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдореБрджрд╛рдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж