PHP nesne soru

2 Cevap

Muhtemelen gerçekten temel soru nedir dilerim ama bunu nasıl elde edebilirim.

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

Aşağıdaki fonksiyonu ile denir. Olmadan ->delete, mükemmel çalışıyor, ama sadece işlevin içinde böylece silme aramak için bir yol bulmalıyız.

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

Ben silme kısmı için temelde benim sahte kod için üzgünüm, bu mantıklı umuyoruz.

2 Cevap

Kulüpler olarak delete ... Bunun yerine, $ olay değişkeni değerlendirmek gerekir ama denen bir yöntem var - bu sınıf içinde bir yöntem sanki delete diyorlar Aşağıda yapıyor ve sizi götüreyim ne yapacağını belirlemek:

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

}

Update: Following additional questions in comments...

class Event {

  private $key;

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

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

}

Eğer yapmak istediğiniz işlem anlamaya kontrol event fonksiyonu, ikinci bir parametreyi ekleyin.

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