Ben PHP5.3 ve kapanması ile oynamaya çalışıyorum.
Ben (. Nesnenin içindeki 7 Kapanış İlan: http://www.ibm.com/developerworks/opensource/library/os-php-5.3new2/index.html) burada görmek bu geri arama işlevi $ bu kullanmak mümkün olduğunu, ama öyle değil. Yani kullanım değişken olarak $ this vermeye çalışın:
$self = $this;
$foo = function() use($self) { //do something with $self }
Yani aynı örneği kullanmak için:
class Dog
{
private $_name;
protected $_color;
public function __construct($name, $color)
{
$this->_name = $name;
$this->_color = $color;
}
public function greet($greeting)
{
$self = $this;
return function() use ($greeting, $self) {
echo "$greeting, I am a {$self->_color} dog named {$self->_name}.";
};
}
}
$dog = new Dog("Rover","red");
$dog->greet("Hello");
Output:
Hello, I am a red dog named Rover.
Bütün bu örneğin ilk dize yazdırmak ama geri dönüş fonksiyonu, ama bu benim sorunum değil gelmez.
Geri arama fonksiyonu global işlev değil Köpek nesneden bağlamda çünkü İkincisi ben, özel veya korunan erişemiyor. Benim sorunum Tha't. Bu kadar aynı:
function greet($greeting, $object) {
echo "$greeting, I am a {$self->_color} dog named {$self->_name}.";
}
Ve ben istiyorum:
public function greet($greeting) {
echo "$greeting, I am a {$self->_color} dog named {$self->_name}.";
}
Dog hangi ve küresel değildir.