{"id":290772,"date":"2018-10-15T01:10:02","date_gmt":"2018-10-14T21:10:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=290772"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=290772","title":{"rendered":"PHP-\u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u2116 141 (1 \u2013 15 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2018)"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><a href=\"https:\/\/habr.com\/company\/zfort\/blog\/426391\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/22\/qr\/kv\/22qrkvnogheefchzb4sw1xpdpxk.jpeg\" width=\"585\"><\/div>\n<p><\/a>  <\/p>\n<p>\u0421\u0432\u0435\u0436\u0430\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b. \u0412 \u0432\u044b\u043f\u0443\u0441\u043a\u0435: PHP 7.3.0RC3, CodeIgniter 4.0.0 alpha1 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u043b\u0438\u0437\u044b, 62% \u0441\u0430\u0439\u0442\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 PHP 5, \u0432\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u0441 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0439 \u0438 \u043c\u0438\u0442\u0430\u043f\u043e\u0432, \u043f\u043e\u0440\u0446\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<br \/>  \u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f!<\/p>\n<p>  <a name=\"habracut\"><\/a>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f57\/4e9\/991\/f574e9991c42407b8fa789a66b854f8d.png\" width=\"20\"> \u041d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438 \u0440\u0435\u043b\u0438\u0437\u044b<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/php.net\/index.php#id2018-10-11-1\">PHP 7.3.0RC3<\/a> \u2014 \u041e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0435\u043b\u0438\u0437-\u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u043e <a href=\"https:\/\/wiki.php.net\/todo\/php73#timetable\">\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e<\/a>. \u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u0437\u043e\u0440\u044b \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/kinsta.com\/blog\/php-7-3\/\">\u0442\u0443\u0442<\/a>, <a href=\"https:\/\/www.tomasvotruba.cz\/blog\/2018\/08\/16\/whats-new-in-php-73-in-30-seconds-in-diffs\/\">\u0442\u0443\u0442<\/a>, <a href=\"https:\/\/www.phparch.com\/2018\/09\/php-7-3-is-on-track\/\">\u0442\u0443\u0442<\/a>, <a href=\"https:\/\/habr.com\/post\/422507\/\">\u0442\u0443\u0442<\/a>, \u0438 \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c <a href=\"https:\/\/5minphp.ru\/episode36\/\">\u0442\u0443\u0442<\/a>.<\/li>\n<li><a href=\"http:\/\/php.net\/archive\/2018.php#id2018-10-11-2\">PHP 7.2.11<\/a><\/li>\n<li><a href=\"http:\/\/php.net\/archive\/2018.php#id2018-10-11-3\">PHP 7.1.23<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/sebastianbergmann\/phpunit\/blob\/7.4\/ChangeLog-7.4.md#740---2018-10-05\">PHPUnit 7.4<\/a> \u2014 \u0422\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d <a href=\"https:\/\/phpunit.readthedocs.io\/ru\/latest\/\">\u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439<\/a> \u043e\u0442 <a href=\"https:\/\/habr.com\/users\/lex111\/\" class=\"user_link\">lex111<\/a>.<\/li>\n<li><a href=\"https:\/\/forum.codeigniter.com\/thread-71828.html\">CodeIgniter 4.0.0 alpha1<\/a><\/li>\n<li><a href=\"https:\/\/www.zdnet.com\/article\/around-62-of-all-internet-sites-will-run-an-unsupported-php-version-in-10-weeks\/\">62% \u0441\u0430\u0439\u0442\u043e\u0432 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 PHP &lt;=5.6<\/a> \u2014 \u0412 \u043a\u043e\u043d\u0446\u0435 2015 \u0433\u043e\u0434\u0430 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e <a href=\"https:\/\/wiki.php.net\/rfc\/php56timeline\">\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/a> \u043f\u0440\u043e\u0434\u043b\u0438\u0442\u044c \u0441\u0440\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 PHP 5 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 2018. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 <a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\/5\/all\">\u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b<\/a> \u0432\u0441\u0435\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 PHP 5.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c9e\/e78\/803\/c9ee7880391644e4aef6cc28ca681ab0.png\" width=\"20\"> PHP Internals<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc\/spread_operator_for_array\">RFC: Spread Operator in Array<\/a> \u2014 \u0412 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>...<\/code> \u0434\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432.\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"php\">$parts = ['apple', 'pear']; $fruits = ['banana', 'orange', ...$parts, 'watermelon']; \/\/ ['banana', 'orange', 'apple', 'pear', 'watermelon']; <\/code><\/pre>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/cf8\/62d\/907\/cf862d9072784d04b621238ec137f2ca.png\" width=\"20\"> \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/ricardofiorani\/php-legofy\">ricardofiorani\/php-legofy<\/a> \u2014 \u041f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442 \u0432\u0430\u0448\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438\u0437 \u043a\u0443\u0431\u0438\u043a\u043e\u0432 LEGO.<\/li>\n<li><a href=\"https:\/\/github.com\/mougrim\/php-xdebug-proxy\">mougrim\/php-xdebug-proxy<\/a> \u2014 Dbgp Xdebug \u043f\u0440\u043e\u043a\u0441\u0438. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u043a\u0441\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/confluence.jetbrains.com\/display\/PhpStorm\/Multi-user+debugging+in+PhpStorm+with+Xdebug+and+DBGp+proxy#Multi-userdebugginginPhpStormwithXdebugandDBGpproxy-HowdoesXdebugwork\">\u0442\u0443\u0442<\/a>. \u041f\u0440\u0438\u0441\u043b\u0430\u043b <a href=\"https:\/\/habr.com\/users\/mougrim\/\" class=\"user_link\">mougrim<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/alhimik1986\/php-excel-templator\">alhimik1986\/php-excel-templator<\/a> \u2014 \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Excel-\u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0438 \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u043e\u0432. <a href=\"https:\/\/habr.com\/post\/425763\/\">\u0425\u0430\u0431\u0440\u0430\u043f\u043e\u0441\u0442<\/a> \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443.<\/li>\n<li><a href=\"https:\/\/github.com\/localheinz\/composer-normalize\">localheinz\/composer-normalize<\/a> \u2014 \u041f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f Composer, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u0432 \u043f\u043e\u0440\u044f\u0434\u043e\u043a composer.json.<\/li>\n<li><a href=\"https:\/\/github.com\/Symplify\/ChangelogLinker\">Symplify\/ChangelogLinker<\/a> \u2014 \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 <code>CHANGELOG.md<\/code>. <a href=\"https:\/\/www.tomasvotruba.cz\/blog\/2018\/10\/01\/new-in-symplify-5-generate-rich-precise-and-smart-changelog-in-seconds\/\">\u041f\u043e\u0441\u0442<\/a> \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443.<\/li>\n<li><a href=\"https:\/\/github.com\/phpecc\/phpecc\">phpecc\/phpecc<\/a> \u2014 \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c PHP.<\/li>\n<li><a href=\"https:\/\/github.com\/offdev\/csv\">offdev\/csv<\/a> \u2014 \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 CSV \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0440\u0438\u043c\u043e\u0432.<\/li>\n<li><a href=\"https:\/\/github.com\/matthiasnoback\/TalisORM\">matthiasnoback\/TalisORM<\/a> \u2014 \u041f\u0440\u043e\u0441\u0442\u0430\u044f ORM \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 DDD.<\/li>\n<li><a href=\"https:\/\/github.com\/twirphp\/twirp\">twirphp\/twirp<\/a> \u2014 \u041f\u043e\u0440\u0442 RPC-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 <a href=\"https:\/\/twitchtv.github.io\/twirp\/\">Twirp<\/a> \u043e\u0442 Twitch \u043d\u0430 PHP, \u043f\u043e\u043a\u0430 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435.<\/li>\n<li><a href=\"https:\/\/github.com\/slashtrace\/slashtrace\">slashtrace\/slashtrace<\/a> \u2014 \u041a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0448\u0438\u0431\u043e\u043a \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u043e\u0432 Sentry, Raygun, Bugsnag. \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 <a href=\"https:\/\/github.com\/filp\/whoops\">filp\/whoops<\/a>.<\/li>\n<\/ul>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/329\/bec\/7c1\/329bec7c1e914963a1c5d2f2bfe99995.png\" width=\"20\"> \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<ul>\n<li>\n<h5><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/96b\/65e\/921\/96b65e92179a40f2bd1884549973ddd5.png\" width=\"16\"> Symfony<\/h5>\n<p>   <\/p>\n<ul>\n<li><a href=\"https:\/\/symfony.com\/blog\/a-week-of-symfony-615-8-14-october-2018\">\u041d\u0435\u0434\u0435\u043b\u044f Symfony #615 (8-14 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2018)<\/a><\/li>\n<li><a href=\"https:\/\/symfony.com\/blog\/a-week-of-symfony-614-1-7-october-2018\">\u041d\u0435\u0434\u0435\u043b\u044f Symfony #614 (1-7 \u043e\u043a\u0442\u044f\u0431\u0440\u044c 2018)<\/a><\/li>\n<li><a href=\"https:\/\/dunglas.fr\/2017\/10\/symfony-4-http2-push-and-preloading\/\">Symfony 4: HTTP\/2 push \u0438 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/manomano-tech\/diving-into-symfonys-dependencyinjection-part-1-first-steps-with-the-container-2fad0593c052\">\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 Symfony \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 DependencyInjection<\/a><\/li>\n<\/ul>\n<p>   <\/li>\n<li>\n<h5><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/314\/bd0\/f0d\/314bd0f0dfc54e3fa7f0c0daef1a2d25.png\" width=\"16\"> Laravel<\/h5>\n<p>   <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/beyondcode\/laravel-tag-helper\">beyondcode\/laravel-tag-helper<\/a> \u2014 \u0425\u0435\u043b\u043f\u0435\u0440\u044b HTML \u0442\u0435\u0433\u043e\u0432.<\/li>\n<li><a href=\"https:\/\/github.com\/akaunting\/akaunting\">akaunting\/akaunting<\/a> \u2014 \u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u0438\u0438 \u043d\u0430 \u0431\u0430\u0437\u0435 Laravel.<\/li>\n<li><a href=\"https:\/\/blog.hacken.io\/dangers-of-laravel-debug-mode-enabled\">\u041c\u043d\u043e\u0433\u0438\u0435 \u0441\u0430\u0439\u0442\u044b \u043d\u0430 Laravel \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c DEBUG \u0440\u0435\u0436\u0438\u043c\u043e\u043c<\/a><\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/500\/4e4\/176\/5004e41767c539382d09c44e143f9bd6.png\"> <a href=\"https:\/\/habr.com\/post\/425101\/\">Docker + Laravel = \u2764<\/a><\/li>\n<\/ul>\n<p>   <\/li>\n<li>\n<h5>Async PHP<\/h5>\n<p>   <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/mmasiukevich\/service-bus\">mmasiukevich\/service-bus<\/a> \u2014 \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043d\u0430 \u0431\u0430\u0437\u0435 <a href=\"https:\/\/github.com\/amphp\">Amphp<\/a> \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 Saga, CQRS, EventSourcing, Message Bus.<\/li>\n<\/ul>\n<p>   <\/li>\n<li>\n<h5>CMS<\/h5>\n<p>   <\/p>\n<ul>\n<li><a href=\"https:\/\/www.drupal.org\/core\/release-cycle-overview\">\u0414\u0430\u0442\u044b \u0440\u0435\u043b\u0438\u0437\u043e\u0432 Drupal<\/a> \u2014 8.7 \u2013 1 \u043c\u0430\u044f 2019, 8.8 \u2013 4 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2019<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c WordPress \u041c\u044d\u0442\u0442 \u041c\u0443\u043b\u043b\u0435\u043d\u0432\u0435\u0433 <a href=\"https:\/\/make.wordpress.org\/core\/2018\/10\/03\/a-plan-for-5-0\/\">\u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u043f\u043b\u0430\u043d\u043e\u043c \u043d\u0430 WordPress 5.0<\/a><\/li>\n<\/ul>\n<p>   <\/li>\n<li><a href=\"https:\/\/www.exakat.io\/land-where-php-uses-eval\/\">\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f eval() \u0432 PHP-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445<\/a><\/li>\n<li><a href=\"https:\/\/matthiasnoback.nl\/2018\/10\/test-driving-repository-classes-part-2-storing-and-retrieving-entities\/\">\u041e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432<\/a><\/li>\n<li><a href=\"https:\/\/jmauerhan.wordpress.com\/2018\/10\/04\/the-5-types-of-test-doubles-and-how-to-create-them-in-phpunit\/\">5 \u0442\u0438\u043f\u043e\u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u0432\u043e\u0439\u043d\u0438\u043a\u043e\u0432 \u0438 \u043a\u0430\u043a \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432 PHPUnit<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/ticketswap\/fixture-factory-in-php-7969efd9c5d7\">\u041a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u0438\u043a\u0441\u0442\u0443\u0440\u044b \u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c<\/a><\/li>\n<li><a href=\"https:\/\/glamanate.com\/blog\/test-driven-development-phpstorm-auto-testing-enabled\">TDD \u0432 PhpStorm \u0438 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432<\/a><\/li>\n<li><a href=\"https:\/\/xtreamwayz.com\/blog\/2015-12-14-phpstorm-container-interop-code-completion\">\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0432 PhpStorm \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 PSR-11<\/a><\/li>\n<li><a href=\"https:\/\/www.tomasvotruba.cz\/blog\/2018\/10\/11\/hi-my-name-is-tom-conctat-vs-in-sprintf-vs-in-string-variables\/\">\u041a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f vs. sprintf vs. \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f<\/a> \u2014 \u0410 \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445?<\/li>\n<li><a href=\"https:\/\/igor.io\/2013\/03\/31\/stateless-services.html\">Stateless Services<\/a> \u2014 \u0421\u0442\u0430\u0440\u0430\u044f, \u043d\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/500\/4e4\/176\/5004e41767c539382d09c44e143f9bd6.png\"> <a href=\"https:\/\/habr.com\/post\/425763\/\">PHP Excel Templator (PHP-\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u0434\u043b\u044f Excel) \u0438\u043b\u0438 \u043a\u0430\u043a \u043c\u044b \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0438\u0441\u0430\u043b\u0438 \u0445\u0430\u0440\u0434\u043a\u043e\u0434 \u0434\u043b\u044f Excel<\/a><\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/500\/4e4\/176\/5004e41767c539382d09c44e143f9bd6.png\"> <a href=\"https:\/\/habr.com\/post\/425075\/\">\u041c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0437\u0440\u0435\u043d\u0438\u0435: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Google Cloud Vision \u043d\u0430 PHP<\/a><\/li>\n<li><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/500\/4e4\/176\/5004e41767c539382d09c44e143f9bd6.png\"> <a href=\"https:\/\/habr.com\/post\/425223\/\">Android-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 JPHP<\/a><\/li>\n<\/ul>\n<h3><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8dc\/c23\/677\/8dcc236774104f8286a40ceaea553820.png\" width=\"20\"> \u0410\u0443\u0434\u0438\u043e \u0438 \u0432\u0438\u0434\u0435\u043e\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/h3>\n<p>  <\/p>\n<ul>\n<li><img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"> <a href=\"https:\/\/www.youtube.com\/watch?v=lk3gaO9xIU8&amp;list=PLECEw2eFfW7gNcVCgaij3KHHFTTME41_Z\">\u0412\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 PHPConf.Asia 2018<\/a><\/li>\n<li><img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"> <a href=\"https:\/\/www.youtube.com\/watch?v=B6XUEoZlsWk\">prooph\/micro and FPP \u2014 less is more<\/a> \u2014 \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Prooph Components \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 \u0431\u0430\u0437\u0435 <a href=\"https:\/\/github.com\/prooph\/micro\">prooph\/micro<\/a> \u0438 \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u043c\u043e\u0447\u044c. \u041f\u0440\u0438\u0441\u043b\u0430\u043b <a href=\"https:\/\/twitter.com\/dmitrybalabka\">@dmitrybalabka<\/a>.<\/li>\n<li><img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"> <a href=\"https:\/\/www.youtube.com\/watch?v=TOpC98b_Yok\">Maximum PhpStorm<\/a><\/li>\n<li><img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"> <a href=\"https:\/\/threedevsandamaybe.com\/running-symfony-on-aws-lambda-with-neal-brooks\/\">\u041f\u043e\u0434\u043a\u0430\u0441\u0442 Three Devs &amp; A Maybe: Symfony \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 AWS Lambda<\/a><\/li>\n<li><img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"><img decoding=\"async\" alt=\"habr\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/500\/4e4\/176\/5004e41767c539382d09c44e143f9bd6.png\"> <a href=\"https:\/\/habr.com\/company\/tuturu\/blog\/426059\/\">Tutu PHP Meetup #2: \u0432\u0438\u0434\u0435\u043e \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0439<\/a><\/li>\n<li><img decoding=\"async\" alt=\"video\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/976\/d3e\/38a\/976d3e38a34b003f86f91795524af9f8.gif\"><img decoding=\"async\" alt=\"ru\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c72\/991\/4ca\/c729914ca9c21661c5abd81052c6a10e.gif\"> <a href=\"https:\/\/5minphp.ru\/episode40\/\">\u041f\u044f\u0442\u0438\u043c\u0438\u043d\u0443\u0442\u043a\u0430 PHP \u0412\u044b\u043f\u0443\u0441\u043a \u211640 \u2014 Continue targeting switch<\/a> \u2014 \u0412 PHP 7.3, \u0435\u0441\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c continue \u0431\u0435\u0437 \u0446\u0438\u0444\u0440\u044b 2 \u0432\u043d\u0443\u0442\u0440\u0438 switch \u0432\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u043a\u043b\u0430 \u043e\u043d, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c Warning: \u00abcontinue\u00bb targeting switch is equivalent to \u00abbreak\u00bb. Did you mean to use \u00abcontinue 2\u00bb? \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435!<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438\u043b\u0438 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u2014 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432 <a href=\"https:\/\/habrahabr.ru\/conversations\/pronskiy\/\">\u043b\u0438\u0447\u043a\u0443<\/a>.<br \/>  \u0412\u043e\u043f\u0440\u043e\u0441\u044b \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430 <a href=\"mailto:roman@pronskiy.com\">\u043f\u043e\u0447\u0442\u0443<\/a> \u0438\u043b\u0438 \u0432 <a href=\"https:\/\/twitter.com\/pronskiy\">\u0442\u0432\u0438\u0442\u0442\u0435\u0440<\/a>.<\/p>\n<p>  <a href=\"https:\/\/bit.ly\/php-digest-add-link\">\u041f\u0440\u0438\u0441\u043b\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443<\/a><br \/>   <a href=\"https:\/\/pronskiy.com\/php-digest\/\">\u041f\u043e\u0438\u0441\u043a \u0441\u0441\u044b\u043b\u043e\u043a \u043f\u043e \u0432\u0441\u0435\u043c \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0430\u043c<\/a><br \/>   \u2190 <a href=\"https:\/\/habr.com\/company\/zfort\/blog\/424949\/\">\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0432\u044b\u043f\u0443\u0441\u043a: PHP-\u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u2116 140<\/a>  <\/p>\n<\/div>\n<p>        <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/post\/426391\/\"> https:\/\/habr.com\/post\/426391\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><a href=\"https:\/\/habr.com\/company\/zfort\/blog\/426391\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/22\/qr\/kv\/22qrkvnogheefchzb4sw1xpdpxk.jpeg\" width=\"585\"><\/div>\n<p><\/a>  <\/p>\n<p>\u0421\u0432\u0435\u0436\u0430\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b. \u0412 \u0432\u044b\u043f\u0443\u0441\u043a\u0435: PHP 7.3.0RC3, CodeIgniter 4.0.0 alpha1 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u043b\u0438\u0437\u044b, 62% \u0441\u0430\u0439\u0442\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 PHP 5, \u0432\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u0441 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0439 \u0438 \u043c\u0438\u0442\u0430\u043f\u043e\u0432, \u043f\u043e\u0440\u0446\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<br \/>  \u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f!<\/p>\n<p>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-290772","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/290772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=290772"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/290772\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=290772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=290772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=290772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}