请原谅可能是一个非常基本的问题,但我如何实现这一目标。
$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);
}
}
}
我希望这是有道理的,对于我的伪代码基本上对于删除部分。
答案 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