2

誰かが次のphp4コードを書きましたが、これをphp5に移植しようとしています:

クラスは Foo (有罪を保護するために変更された名前) です。メソッドの 1 つで、それを save() と呼びます。クラスは明らかに次のようにリセットされます。

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

その結果、次のエラーが発生します。

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

私の考えは次のように修正することですが、同じではないかもしれないと心配しています:

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

クラスをインクルードすると、PHP は解析/致命的なエラーをスローしなくなりましたが、先ほど言ったように、php4 コンストラクトと同じことを達成できますか?

4

2 に答える 2

2

クラスが編成されているコンテキストを知らなければ、正しい解決策を伝えるのは困難です。

それに応じて、次のことを実行できます。

return new Foo($this->Foo_Id);

「保存」メソッドを呼び出しているコードは、Foo のインスタンスを取得します。外から見ると、これは次のようになります。

前:

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

後:

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

あるいは:

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

多分これはあなたを助けます。

于 2009-08-06T12:07:26.933 に答える