Как подружить валидацию в yii2 и type hint’s в php7?

Для подружения валидации в Yii2 и типизации с использованием Type Hinting в PHP 7 нужно сделать следующее:

1. Включите строгую типизацию в PHP 7, добавив следующую строку в начало вашего файла конфигурации Yii2 (обычно это файл index.php в корневой директории вашего проекта):

declare(strict_types=1);

2. Определите типы параметров функций и возвращаемое значение с помощью Type Hinting. Например, если у вас есть функция, которая принимает параметр типа string и возвращает int, вы можете объявить ее следующим образом:

function myFunction(string $param): int {
   // ваш код
   return 123;
}

3. В классах моделей Yii2 вы можете использовать свойства с типами, используя аннотации PHPDoc. Например, если у вас есть модель User, которая имеет свойство username типа string, вы можете определить ее следующим образом:

/**
 * @property string $username
 */
class User extends yiidbActiveRecord {
   // ваш код
}

4. Для осуществления валидации в Yii2 вы можете использовать правила валидации внутри модели. Вы можете определить типы данных напрямую в правилах валидации с помощью аннотаций PHPDoc или использовать встроенные правила валидации Yii2, такие как string, number, integer и другие.

Например, чтобы проверить, что значение поля username является строкой, вы можете использовать следующее правило в модели User:

public function rules() {
   return [
      ['username', 'string'],
   ];
}

5. Если вам нужно использовать более сложные типы данных, вы можете создать свои собственные правила валидации в Yii2. В этом случае вы можете использовать Type Hinting в правилах валидации, определив типы данных внутри функции правила. Например:

public function rules() {
   return [
      ['username', 'validateUsername'],
   ];
}

public function validateUsername($attribute, $params) {
   /** @var string $this->$attribute */
   // ваш код валидации
}

Таким образом, вы можете успешно подружить валидацию в Yii2 и Type Hinting в PHP 7, чтобы обеспечить более строгую типизацию и предотвратить ошибки в вашем коде. Это поможет улучшить контроль над входными данными и сделать ваш код более читаемым и надежным.