Вопрос об объекте PHP - PullRequest
       1

Вопрос об объекте PHP

0 голосов
/ 27 июня 2009

Извините, что, возможно, действительно простой вопрос, но как мне этого добиться.

$cache = New Mem;    
$cache->event($event)->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 ]

2 голосов
/ 27 июня 2009

Вы вызываете 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 голос
/ 27 июня 2009

Добавьте второй параметр к функции 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...