Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP对象问题_Php - Fatal编程技术网

PHP对象问题

PHP对象问题,php,Php,请原谅,这可能是一个非常基本的问题,但我如何做到这一点 $cache = New Mem; $cache->event($event)->delete; 通过下面的函数调用。如果没有->delete,它工作得非常好,但我只需要找到一种方法在函数中调用delete class Mem { function event($event) { global $pdo; global $memcached; $key

请原谅,这可能是一个非常基本的问题,但我如何做到这一点

$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);
        }
    }
}

我希望这是有意义的,对不起,我的伪代码基本上是用于删除部分的。

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

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

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

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

您正在调用
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;
    }
  }

}
更新:以下是评论中的其他问题。。。
您正在调用
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;
    }
  }

}
更新:以下是评论中的其他问题。。。
什么是删除?变量?一种方法?函数?我只需要知道如何传递到我们想要“删除”的函数中,从而执行memcached->delete而不是memcached->getWhat is delete?变量?一种方法?一个函数?我只需要知道如何传递到我们想要“删除”的函数中,从而执行memcached->delete而不是memcached->getHow我将如何在类中编写一个方法,从相关函数中获取“键”?不幸的是,事件变量的交换不是一个选项。我不是100%清楚你在尝试什么,但我用我认为你试图实现的内容更新了我的答案。你所做的是正确的,但我无法使用事件作为切换的方式。我需要一个面向对象的方式,如删除->事件或事件->函数。如果这有意义的话?$event必须是一个类,如果您希望这样使用它的话。我可以问一下为什么事件必须是一个类吗?如果你想要$event是一个类,或者是一个对象,实际上,你必须像我在回答结束时所做的那样。我如何在我的类中编写一个从相关函数中获取“键”的方法?不幸的是,事件变量的交换不是一个选项。我不是100%清楚你在尝试什么,但我用我认为你试图实现的内容更新了我的答案。你所做的是正确的,但我无法使用事件作为切换的方式。我需要一个面向对象的方式,如删除->事件或事件->函数。如果这有意义的话?$event必须是一个类,如果您希望这样使用它的话。我可以问一下为什么事件必须是一个类吗?如果你想要$event成为一个类,或者一个对象,实际上,你必须像我在回答结束时做的那样。