public function signin()
{
    $data = $this->pdo('select id, password_hash from users where login = ? limit 1', [
        $this->login
    ])->fetch();
    try {
        if (is_object($data) and password_verify($this->password, $data->password_hash)) {
            if (!is_null($_SESSION['uid'] = $data->id)) {
                return true;
            }
            throw new Error('Что-то пошло не так'); // чтобы не делать возврат строки return $this->error = 'Что-то пошло не так';
        }
        throw new Error('Данные введены неверно'); // чтобы не делать возврат строки return $this->error = 'Данные введены неверно';
    } catch (Error $error) {
        $this->error = $error->getMessage();
        return false;
    }
}И да, как правильно написал OnlyMyQuestion, это не будет работать
Согласно докам после вызова обработчика выполнение будет остановлено.
if (filter_has_var(0, 'go')) { // логика - нажали кнопку методом POST
    $model = new Model();
    if ($model->validator() === true) { // логика - валидация прошла
        $model->go(); // что-то делаем в БД, если ещё в метод передать имя таблицы, то тоже становится похожим на логику
    }
    $model->error;
}мало ли кто что в интернете пишет