hmmm i am thinking i do not know what I am taking about. lol
Been trying to convert some static methods to not be static…
Before
protected static function forgetLogin()
{
$cookie = $_COOKIE['remember_me'] ?? false;
if ($cookie) {
$remembered_login = RememberedLogin::findByToken($cookie);
if ($remembered_login) {
$remembered_login->delete();
}
setcookie('remember_me', '', time() - 3600); // set to expire in the past
}
}
After (DOES NOT LOOK AS PRETTY)
protected function forgetLogin()
{
$cookie = $_COOKIE['remember_me'] ?? false;
if ($cookie) {
$remLoginObj = new RememberedLogin();
$remLoginObjTwo = $remLoginObj->findByToken($cookie); // uses FETCH_CLASS
if ($remLoginObjTwo) {
$remLoginObjTwo->delete();
}
setcookie('remember_me', '', time() - 3600); // set to expire in the past
}
}
// not sure about this class name, feel free to use your own
// I just had to put _something_ there :D
class Authentication
{
const COOKIE_NAME = 'remember_me';
/**
* @var RememberedLogin
*/
private $rememberedLoginService;
/**
* @var CookieJar
*/
private $cookieJar;
public function __construct(RememberedLoginService $rememberedLoginService, CookieJar $cookieJar)
{
$this->rememberedLoginService = $rememberedLoginService;
$this->cookieJar = $cookieJar;
}
protected function forgetLogin()
{
$cookie = $this->cookieJar->findCookie(self::COOKIE_NAME);
if (null === $cookie) {
return;
}
$rememberedLogin = $this->rememberedLoginService->findByToken();
if (null === $rememberedLogin) {
return;
}
$this->rememberedLoginService->delete($rememberedLogin);
$this->cookieJar->remove(self::COOKIE_NAME);
}
}
Bonus points if RememberedLoginService and CookieJar are interfaces so you can mock them in tests.