bir sınıf sıfırlamak için nasıl 5 taşıma soruya php 4

2 Cevap php

Birisi ben şimdi php5 port çalışıyorum aşağıdaki php4 kodu yazdı:

the class is Foo (name changed to protect the guilty). In one of the methods, we'll call it save() the class apparently is reset like this:

$this = new Foo($this->Foo_Id);

Yani şu hatayla sonuçlanır:

( ! ) Fatal error: Cannot re-assign $this in ...

Benim fikrim bu şekilde bunu düzeltmek olacaktır, ama aynı olmayabilir endişe duyuyorum:

$this->Foo($this->Foo_Id);

Ben sınıfı içerecek PHP, artık ayrıştırma / ölümcül hata atmak değil, ama dediğim gibi, ben php4 yapı olarak aynı şeyi başarmak için gidiyorum?

2 Cevap

Sınıflar size doğru çözümü anlatmak için zor organize edildiği bağlamı bilmeden.

Buna bağlı olarak, sadece yapabileceği:

return new Foo($this->Foo_Id);

"Kurtarmak" yöntemini çağırıyor kod Foo bir örneğini alacak. Dışarıdan bu gibi görünebilir:

befor:

$instance->save($ID);
$instance->methodFromClassFoo(); # Instance would be now of class foo. (which btw. is really bad design.

sonra:

$foo = $instance->save($ID);
$foo->methodFromClassFoo();

hatta:

$instance = $instance->save($ID); // Instance is now instance of foo.
$instance->methodFromClassFoo();

belki bu size yardımcı olur.

Hayır, olmaz. Bu sadece aslında orada ayarlanmamış herhangi özelliklerini etkilemeden (bu arada muhtemelen yine __construct() yeniden adlandırma olmalıdır) yapıcısı herhangi bir gerçek kod yeniden çalışır.