原始 FuelPHP Auth 驱动程序
Original FuelPHP Auth Driver
我正在创建原始 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()
我明白了。我必须声明 login().
但是 SimpleAuth 包声明如下。
public function login($username_or_email = '', $password = ''){}
如何声明带有参数的登录方法?
燃料PHP:1.7.3
PHP: 5.6.13
如果您使用创建控制器 auth.php,登录方法声明如下。
你的方法必须是 action_login($email=null,$pass=null){}
class Controller_Auth extends \Controller_Template
{
function action_login($email=null,$pass=null)
{}
}
我给你两个答案,一个回答你只希望参数是$email
和$password
的情况。另一个告诉我们如何创建一个具有不同参数的登录方法,因为如果你想实现这一点,会引发同样的错误。 (起初我不确定你的问题是什么)。
您的问题:
你的问题是两个签名不兼容。这是因为您没有为 login
函数中的参数提供默认值。你可以简单地替换
来解决它
function login($email, $password)
和
function login($email = '', $password = '')
导致此错误的其他原因可能是您的类型提示与 parent 不同。例如:
function login(LoginParams $loginParams)
但您只是尝试用以下方法覆盖它:
function login($loginParams)
要有不同的参数:
好的,你有两个选择。
首先:
您没有扩展 Auth\Auth_Login_Driver
。这意味着您必须实现 Auth\Auth_Login_Driver
的所有必要功能。显然,如果您需要非常相似的功能,那么您的大部分代码都会有些重复,应该避免这种情况。
第二:
您没有将函数命名为 login
。这意味着您的 class 仍将公开一个 login($username, $password)
函数,您很可能不希望它可用。在你的位置,我只是在 login
中抛出一个 RuntimeException
。然后你可以像这样声明另一个函数:
function login_with_third_param($username = '', $password = '', $third_param = '') {
}
使用此驱动程序时,您只需说:
Auth::login_with_third_param('joe', 'secret', 'spoon');
它会起作用。
我正在创建原始 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()
我明白了。我必须声明 login().
但是 SimpleAuth 包声明如下。
public function login($username_or_email = '', $password = ''){}
如何声明带有参数的登录方法?
燃料PHP:1.7.3 PHP: 5.6.13
如果您使用创建控制器 auth.php,登录方法声明如下。
你的方法必须是 action_login($email=null,$pass=null){}
class Controller_Auth extends \Controller_Template
{
function action_login($email=null,$pass=null)
{}
}
我给你两个答案,一个回答你只希望参数是$email
和$password
的情况。另一个告诉我们如何创建一个具有不同参数的登录方法,因为如果你想实现这一点,会引发同样的错误。 (起初我不确定你的问题是什么)。
您的问题:
你的问题是两个签名不兼容。这是因为您没有为 login
函数中的参数提供默认值。你可以简单地替换
function login($email, $password)
和
function login($email = '', $password = '')
导致此错误的其他原因可能是您的类型提示与 parent 不同。例如:
function login(LoginParams $loginParams)
但您只是尝试用以下方法覆盖它:
function login($loginParams)
要有不同的参数:
好的,你有两个选择。
首先:
您没有扩展 Auth\Auth_Login_Driver
。这意味着您必须实现 Auth\Auth_Login_Driver
的所有必要功能。显然,如果您需要非常相似的功能,那么您的大部分代码都会有些重复,应该避免这种情况。
第二:
您没有将函数命名为 login
。这意味着您的 class 仍将公开一个 login($username, $password)
函数,您很可能不希望它可用。在你的位置,我只是在 login
中抛出一个 RuntimeException
。然后你可以像这样声明另一个函数:
function login_with_third_param($username = '', $password = '', $third_param = '') {
}
使用此驱动程序时,您只需说:
Auth::login_with_third_param('joe', 'secret', 'spoon');
它会起作用。