Yii2 дайджест новостей разработки #7 Апр'14 > stdout.in Ievgen Kuzminov IT blog

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

Заметки


ruhighload.com ещё один человекопонятный ресурс с грандиозным набором статей об оптимизации и масштабировании веб приложений