class User extends \yii\db\ActiveRecord {
public function rules(){
return[
[
'first_name',
'last_name',
'login'
],
'string'
];
}
}
<?php
interface UserInterface
{
public function getFirstName();
public function getLastName();
public function getLogin();
}
/**
* Class User
*
* @property string $firstName
* @property string $lastName
* @property string $login
*/
class User extends \yii\db\ActiveRecord implements UserInterface
{
...
public function getFirstName()
{
return $this->firstName;
}
public function getLastName()
{
return $this->lastName;
}
public function getLogin()
{
return $this->login;
}
}
class TestController
{
/**
* Здесь явно указываем тип переменной, которую ожидаем. Если мы передадим
* объект, который не имплиментирует нужный интерфейс, то будет ошибка.
*
* @param UserInterface $user
*/
public function actionTest(UserInterface $user)
{
$name = $user->getFirstName();
...
}
}