我最近做了一个cookie课程但不幸的是它不是真正的OOP,因为我让课程做了两件不同的事情。设置/获取cookie并存储te cookie。和OOP意味着每个类都有自己的操作。所以我决定重写我的课程,但我无法让它工作。这是我应该怎么做的。
我为CRUD和一个实现这个名为CookieStorage的接口的类创建了一个接口。我也创建了一个Cookie类来设置cookie值等但现在通过创建这两个类它不起作用,因为我收到此错误:致命错误:在/ Applications / MAMP /中调用未定义的方法CookieStorage :: getName()第27行的htdocs / library / lib / CookieStorage.php
您可以在下面找到我的代码。提前谢谢!<?php
interface StorageInterface {
public function set(Cookie $cookie);
public function get(Cookie $cookie);
public function update(Cookie $cookie);
public function delete(Cookie $cookie);
}
class CookieStorage implements StorageInterface {
/**
* constructor
*/
public function __construct() {
}
/**
* Create cookie.
*/
public function set(Cookie $cookie) {
return setcookie(
$this->getName(),
$this->getValue(),
$this->getTime(),
$this->getPath(),
$this->getDomain(),
$this->getSecure(), true
);
}
/**
* Get cookie.
*/
public function get(Cookie $cookie) {
return $_COOKIE[$this->getName()];
}
/**
* Update cookie.
*/
public function update(Cookie $cookie) {
return $this->update();
}
public function delete(Cookie $cookie) {
return $this->delete();
}
}
?>
答案 0 :(得分:1)
您似乎想要使用$cookie->getName()
。 $this
指向存储类,但您希望存储cookie参数的属性。
<强>更新强>
您在评论中提到的电话是正确的。如果您传递Cookie对象,则在set
函数CookieStorage
中,您需要使用$cookie
,而不是$this
。