PHP __ get ve __ sihirli yöntemleri ayarlayabilirsiniz

0 Cevap php

Ben genellikle yeterli bilgi orada beri ben hiç, programlama soruları gönderebilir sanmıyorum, ve orada değilse ben şeyleri kendime test edin. Ancak, bu sadece doğru görünmüyor şeydir.

Ben tamamen Yanılmıyorsam, __ almak ve __ set yöntemleri aşırı yüklenme izin gerekiyor -> get ve set.

Örneğin, şu ifadeleri __ get yöntemini çağırmak gerekir:

echo $foo->bar;
$var = $foo->bar;

ve şu __ set yöntemi kullanmalısınız:

$foo->bar = 'test';

Bu benim kodunda çalışan, ve bu basit örnek ile tekrarlanabilir değildi:


class foo {
  public $bar;
  public function __get($name) {
    echo "Get:$name";
    return $this->$name;
  }
  public function __set($name, $value) {
    echo "Set:$name to $value";
    $this->$name = $value;
  }
}

$foo = new foo();

echo $foo->bar;
$foo->bar = 'test';

echo "[$foo->bar]";

Bu sonuçlar, sadece

[test]

Bazı kalıp koymak () onu hiç vurmak olmadığını gösteriyor oraya çağırır.

Şimdilik, ben sadece vida dedi, ve elle kullanıyorum __ şimdi için gerekli nerede olsun, ama bu çok dinamik değil ve 'aşırı' kod özellikle denilen sürece denir değil aslında bu bilgiyi gerektirir. Sanırım bu da bir ben ya da neden bu çalışmıyor gerektiğini anladım şekilde işlev gerekiyordu olmadığını bilmek istiyorum.

Bu php 5.3.3 üzerinde çalışıyor

0 Cevap