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

Заметки