【问题标题】:Cannot re-assign $this?无法重新分配 $this?
【发布时间】:2013-10-15 01:51:48
【问题描述】:

我的服务器上有一个脚本,它的 php 版本为 4。现在它已更改为 php5,并且该脚本不再起作用。我收到此错误:

致命错误:无法在 URL database.php 第 88 行重新分配 $this

文件中有一个具有函数的类。里面是第88行:

$this = new $db( $serv, $user, $pass, $dbName );

错误是什么意思,我该如何更改?

【问题讨论】:

标签: php message php4


【解决方案1】:

$this 是一个特殊的“变量”,它总是引用当前函数正在执行的对象。它只在属于的函数内部才有意义;但是,您不得在其他任何地方使用它,并且您可能永远不会分配给它。解决方法就是重命名变量。

【讨论】:

  • 好吧,我将它重命名为 dbo,但这只会给我一个新错误:致命错误:调用未定义函数:URL QuizOperations.php 中的 doquery() 第 524 行 第 524 行 $this-> db->doQuery(.....);有几个函数具有相似的行。如果我将这些变量更改为 dbo,我会收到相同的错误消息。
  • @Atha:这是您自己的代码还是您从其他地方获得的代码?它是为 PHP 4 还是 5 编写的?无论如何,仅从那一行就很难判断问题的根源,而且由于它是一种不同类型的错误,您最好将其作为一个新问题发布。
【解决方案2】:

您可以通过变量变量重新分配 $this 值

$name = 'this';
$$name = 'stack';
echo $this;

//这将导致堆栈

【讨论】:

    【解决方案3】:

    该类正在尝试重新定义自身(php 中的 $this 与 C# 中的 this 相同)并且无法完成。您应该将$this 更改为其他内容,然后错误就会消失。

    【讨论】:

      【解决方案4】:

      $this 是保留变量名,不能手动赋值。

      【讨论】:

        【解决方案5】:

        $this 是 PHP 中的预定义变量。

        这是 PHP 手册中的参考:类和对象:基础知识。它描述了在方法内部,$this 如何指向正在被操作的“这个对象”。不过,它仍然保留在方法之外。

        将标识符更改为另一个词。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-05
          • 1970-01-01
          • 2014-01-20
          相关资源
          最近更新 更多