2

有人编写了以下 php4 代码,我现在正尝试将其移植到 php5:

班级是 Foo (更改名称以保护有罪者)。在其中一种方法中,我们将其称为 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);

调用“save”方法的代码将获得 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 回答
1

不,不会的。这只会重新运行构造函数中的任何实际代码(顺便说一下,您可能应该重命名为__construct()),而不会影响实际未设置在那里的任何属性。

于 2009-08-06T11:49:41.133 回答