Оригинальный драйвер FuelPHP Auth

Я создаю оригинальный Auth_Login_MyDriver, расширяющий Auth_Login_Driver.
Я реализовал метод входа в систему, как это.

public function login($email,$pass){
}

Но я получил следующую ошибку.

Declaration of Auth\Auth_Login_Mydriver::login() must be compatible with Auth\Auth_Login_Driver::login()

Я понимаю причину. Я должен объявить логин ().

Но пакет SimpleAuth объявлен следующим образом.

public function login($username_or_email = '', $password = ''){}

Как мне объявить метод входа в систему с параметрами?

FuelPHP: 1.7.3
PHP: 5.6.13

0

Решение

Я даю вам два ответа, один отвечает на случай, если вы хотите, чтобы параметры были $email, а также $password, Другой рассказывает, как создать метод входа в систему с другими параметрами, поскольку если вы захотите добиться этого, возникнет та же ошибка. (И сначала я не был уверен, в чем твоя проблема).

Твоя проблема:

Ваша проблема в том, что две подписи несовместимы. Это потому, что вы не предоставили значения по умолчанию для параметров в login функция. Вы можете решить это просто заменив

function login($email, $password)

с

function login($email = '', $password = '')

Другие причины этой ошибки могут заключаться в том, что ваши шрифты отличаются от родительских. Например:

function login(LoginParams $loginParams)

но вы просто пытаетесь переопределить это с помощью:

function login($loginParams)

Чтобы иметь разные параметры:

Хорошо, у вас есть два варианта.

Первый:
Вы не расширяете Auth\Auth_Login_Driver, Это означает, что вы должны реализовать все необходимые функции Auth\Auth_Login_Driver, Очевидно, что если вам нужна очень похожая функциональность, большая часть вашего кода будет иметь некоторое дублирование, которого следует избегать.

Во-вторых:
Вы не называете свою функцию login, Это означает, что ваш класс по-прежнему будет login($username, $password) функция, которую, скорее всего, вы не хотите использовать. На твоем месте я бы просто кинул RuntimeException в login, Тогда вы можете просто объявить другую функцию, например так:

function login_with_third_param($username = '', $password = '', $third_param = '') {
}

При использовании этого драйвера вы можете просто сказать:

Auth::login_with_third_param('joe', 'secret', 'spoon');

Это сработает.

3

Другие решения

если вы используете create controller auth.php, объявление метода входа в систему, как это.
ваш метод должен быть action_login($email=null,$pass=null){}

class Controller_Auth extends \Controller_Template
{

function action_login($email=null,$pass=null)
{}
}

увидеть ниже

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector