OOP Cookie类

时间:2012-07-20 08:13:17

标签: php oop

我最近做了一个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();
}

}

?>

1 个答案:

答案 0 :(得分:1)

您似乎想要使用$cookie->getName()$this指向存储类,但您希望存储cookie参数的属性。

<强>更新 您在评论中提到的电话是正确的。如果您传递Cookie对象,则在set函数CookieStorage中,您需要使用$cookie,而不是$this