0

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

}

?>
4

1 回答 1

1

看起来你想使用$cookie->getName(). $this指向存储类,但您想存储 cookie 参数的属性。

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

于 2012-07-20T08:20:01.400 回答