Говорят:
век живи, век учись, а дураком помрёшь
Это к чему? да это к трейтам в PHP. Они уже давно введены, а я вот только начал их использовать в новом проекте.
Первое что мне пришлось сделать, это вынести в trait метод атрибутов. Да, можно было сделать один родительский класс и наследоваться от него. Но решил все же остановиться на трейтах. Что мы имеем:
namespace commontraitsobject; use Yii; trait ObjectModelTrait { /** * Labels * @return array */ public function attributeLabels() { return [ 'id' => Yii::t('app', 'ID'), 'name' => Yii::t('app', 'Name'), 'desc' => Yii::t('app', 'Description'), 'index_id' => Yii::t('app', 'Index'), 'is_active' => Yii::t('app', 'Is active'), ]; } }
Данный trait не однократно использовался в моделях, вот один из примеров:
namespace commonmodelsterritory; use yiidbActiveRecord; use commontraitsobjectObjectModelTrait; class TerritoryAreaModel extends ActiveRecord { use ObjectModelTrait; public static function tableName() { return '{{%territory_area}}'; } }