Yii2 дайджест новостей разработки #7 Апр'14

16 апр. 2014 г., 10:04:09

Счастливый 7-ой дайджест в честь Бета релиза. Хотя после развёрнутой заметки о Beta релизе на habrahabr, не так много нового, но всё же :)
Благодаря PR кампании Александра Макарова (@sam_dark), прошлый дайджест посмотрели более 5500 человек. Это радует и вдохновляет!
tl;dr;
Yii2 beta выпущена, PSR-2, DI, новый RBAC, улобный Url helper, много новых виджетов

Визуализация разработки Yii2

сделал Serg Ilin при помощи Gource

Новые расширения Yii2

Подключайтесь, друзья! Создавайте и делитесь своими расширениями как это делает, например, 2amigos. Давайте расширять этоксистему Yii2 !

Yii2 Tips & Tricks

        $url = ['site/index'];
        $url['Model'] = $model->attributes;
        echo Url::to($url);
common\models\ArticleData
backend\models\ArticleData (extends from common\models\ArticleData)
frontend\models\ArticleData (extends from common\models\ArticleData)

Так можно повторно использовать их на фротэнде и бекэнде, без переопределения

$calledClass = static::className();
$nsPosition = strrpos($calledClass, '\\');
$calledNS = substr($calledClass, 0, $nsPosition);
...
return $this->hasMany(forward_static_call([$calledNS . '\ArticlesData', 'className']), ['bla' => 'bla_id']);
'request'=> [
            'class' => '\yii\web\Request',
            'hostInfo' => $params['backendUrl'],
            'baseUrl' => $params['backendUrl'],
        ],

или подменить переменную $_SERVER где-то в процессе инициализации

$_SERVER['SERVER_NAME'] = 'mydomain.com';
$_SERVER['HTTP_HOST'] = 'mydomain.com';
 namespace app\models;

 use yii\base\Object;
 use yii\db\Connection;
 use yii\di\Container;

 interface UserFinderInterface
 {
     function findUser();
 }

 class UserFinder extends Object implements UserFinderInterface
 {
     public $db;

     public function __construct(Connection $db, $config = [])
     {
         $this->db = $db;
         parent::__construct($config);
     }

     public function findUser()
     {
     }
 }

 class UserLister extends Object
 {
     public $finder;

     public function __construct(UserFinderInterface $finder, $config = [])
     {
         $this->finder = $finder;
         parent::__construct($config);
     }
 }

 $container = new Container;
 $container->set('yii\db\Connection', [
     'dsn' => '...',
 ]);
 $container->set('app\models\UserFinderInterface', [
     'class' => 'app\models\UserFinder',
 ]);
 $container->set('userLister', 'app\models\UserLister');

 $lister = $container->get('userLister');

 // which is equivalent to:

 $db = new \yii\db\Connection(['dsn' => '...']);
 $finder = new UserFinder($db);
 $lister = new UserLister($finder);

Читайте предыдущий дайджест

comments powered by Disqus
Евгений
Кузьминов "iJackUA"
Web Team Lead
в MobiDev (Харьков, Украина)
Code in Ruby and Elixir, but still love PHP. Explore ES6 and Vue.js. Explore databases, use Ubuntu and MacOS, think about IT people and management

Заметки


DoItLive is a tool for live presentations in the terminal. It reads a file of shell commands and replays the commands in a fake terminal session as you type random characters.