zubzizub
11/30/2017 - 2:45 PM

разные способы создания объекта с помощью контейнера. При создании объекта можно сконфигурировать различные параметры, в т.ч. и поведения

разные способы создания объекта с помощью контейнера. При создании объекта можно сконфигурировать различные параметры, в т.ч. и поведения

<?php

namespace core\behaviors;

use yii\base\Behavior;

class TestBehavior extends Behavior
{
    public function getCount()
    {
        echo 5;
    }
}
<?php
return [
    'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
    'components' => [
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'account' => [
            'class' => \core\entities\Account::className(),
            'as testBehavior' => \core\behaviors\TestBehavior::className()
        ]
    ]
];
<?php

namespace frontend\controllers;

class SiteController extends Controller
{

  public function actionIndex()
  {
      $account = Yii::createObject([
          'class' => 'core\entities\Account',
          'as testBehavior' => \core\behaviors\TestBehavior::className()
      ]);
      $account->count; // 5
      $account->getCount(); // 5
      
      // или можно с использованием файла конфигурации
      $account = Yii::$app->account;
      $accout->count; // 5

      return $this->render('index');
  }
}