PHP对象问题

时间:2009-06-27 16:39:43

标签: php

请原谅可能是一个非常基本的问题,但我如何实现这一目标。

$cache = New Mem;    
$cache->event($event)->delete;

通过以下功能调用。没有->delete,它的工作原理非常好,但我只需要找到一种在函数内部调用delete的方法。

class Mem
{
    function event($event)
    {
        global $pdo;
        global $memcached;

        $key = md5(sha1($event) . sha1('events'));

        if ($this->delete)
        {
            return $memcached->delete($key);
        }
        else
        {
            return $memcached->get($key);
        }
    }
}

我希望这是有道理的,对于我的伪代码基本上对于删除部分。

2 个答案:

答案 0 :(得分:2)

您正在调用delete,就好像它是您班级中的方法一样 - 但您没有名为delete的方法......相反,您应该评估$ event变量,因为我正在做在下面确定你将采取什么行动:

class Mem {

  private $pdo;
  private $memcached;

  public function event($event) {

    $key = md5(sha1($event) . sha1('events')); #from your original code

    switch ($event) {
      case "delete":
        #do delete stuff
        $this->memchached->delete($key);
        break;
      case "add":
        #do add stuff
        break;
    }
  }

}

更新:在评论中添加其他问题......

class Event {

  private $key;

  public function __construct($key) {
    $this->key = $key;
  }

  public function delete($key) {
    # do delete
  }

}

答案 1 :(得分:1)

event函数添加第二个参数,您可以检查该函数以确定要执行的操作。

class Mem
{
    function event($event, $shouldDelete)
    {
        global $pdo;
        global $memcached;

        $key = md5(sha1($event) . sha1('events'));

        if ($shouldDelete)
        {
                return $memcached->delete($key);
        }
        else
        {
                return $memcached->get($key);
        }
    }
}

$cache = new Mem;    
$cache->event($event, true); // true to delete, false to get