Я создаю оригинальный 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
Я даю вам два ответа, один отвечает на случай, если вы хотите, чтобы параметры были $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');
Это сработает.
если вы используете create controller auth.php, объявление метода входа в систему, как это.
ваш метод должен быть action_login($email=null,$pass=null){}
class Controller_Auth extends \Controller_Template
{
function action_login($email=null,$pass=null)
{}
}