0

最近Cookieクラスを作成しましたが、クラスに2つの異なることを行わせたため、残念ながら実際にはOOPではありませんでした。つまり、Cookieを設定/取得し、Cookieを保存します。OOPは、すべてのクラスが独自の操作を行うことを意味します。そのため、クラスを書き直すことにしましたが、それを機能させることができません。これが私がやるべきだと思った方法です。

CRUDのインターフェースと、CookieStorageと呼ばれるこのインターフェースを実装するクラスを作成しました。また、Cookie値などを設定するCookieクラスを作成しましたが、この2つのクラスを作成すると、次のエラーが発生するため機能しません。致命的なエラー:/ 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 に答える