Кажуть:
вік живи, вік учись, а дурнем помреш
До чого це? А це про трейти в 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}}';
}
}