Это действительно портит мою голову:
Всякий раз, когда я пытаюсь типизировать переменную, переданную функции типа 'string', например:
public function __call( string $name , array $args ) {
...
}
Я получаю следующую ошибку:
Исправляемая фатальная ошибка: аргумент 1 передан [ClassName] :: __ call () must
быть экземпляром строки, строка, указанная в [php_file_name] в строке
[Line_number]
А? "Должен быть экземпляр строки, заданной строки"? Разве я не пропустил строку? Я серьезно не понимаю это сообщение об ошибке.
Теперь мое решение всегда было чем-то вроде:
public function __call( $name , array $args ) {
if (!is_string($name)) { throw new Exception('$name must be a string');
}
Однако, мой вопрос, есть ли способ на самом деле привести его в определении метода, а не внутри самого метода?