gpt4 book ai didi

Php 似乎无法识别 $this 变量

转载 作者:行者123 更新时间:2023-12-04 18:28:24 25 4
gpt4 key购买 nike

我写了一些代码,它有一些奇怪的行为。 它会为我声明的所有私有(private)和 protected 变量引发 fatal error ,即使我将它们与 $this 一起使用也是如此。在他们面前 .似乎 $this 的范围变量无法识别。

我使用 php 版本 7.1.0 和 apache 版本 2.4.23(我安装了 mpm worker)、Netbeans、Ubuntu 16.04。我也使用 pThreads (https://pecl.php.net/package/pthreads)。我在互联网上搜索并没有发现与此问题类似的任何东西。

我的类从中扩展的 Pool 类是一个 pThreads 类。
例如

class interfacePool extends Pool {

public $data = array();
private $workerCount;
private $timeoutStart;
private $timeout = 50;

public function process() {

$this->timeoutStart = microtime(true);

$this->workerCount = count($this->workers);

while ($this->workerCount > 0 && $this->timeoutStart + (float)$this->timeout > microtime(true)) {

$this->collect(function ($task) {

if ($task->isCompleted()) {

$this->data = array_merge($this->data, json_decode($task->data, true));
$this->workerCount--;

}
return $task->isCompleted();

});

}

$this->shutdown();

return $this->data;

}

}

我得到的错误如下:

PHP Fatal error: Uncaught Error: Cannot access private property interfacePool::$timeoutStart in /usr//local/apache2/htdocs/01_Web/controllers/interface.controller.php:21



堆栈跟踪:
0 /usr/local/apache2/htdocs/01_Web/controllers/interface.controller.php(110): interfacePool->process()

1 /usr/local/apache2/htdocs/01_Web/libs/core.class.php(221): interfaceCtrl->getTariffs()

2 /usr/local/apache2/htdocs/01_Web/index.php(35): core->run()

3 {main}
thrown in /usr/local/apache2/htdocs/01_Web/controllers/interface.controller.php on line 21

发生错误的行是 $this->timeoutStart = microtime(true) .

类(class) interfacePoolinterface.controller.php文件(我不想从其他地方访问这些变量)。
这些错误贯穿整个项目;我到处都有 protected 或私有(private)变量。

最佳答案

它只是 pthreads 中的一个错误。

https://github.com/krakjoe/pthreads/commit/c521adc7b645b9a60f8c3e9b6f1331c7dc6b428b正在使用 EG(fake_scope)错误地,以 NULL 结尾构造函数调用的范围,而不是 zend_get_executed_scope . (此行 fcc.calling_scope = scope; 应改为 fcc.calling_scope = zend_get_executed_scope();。)

还有一个 NULL在内部,范围等同于不在任何类上下文中(即没有私有(private)或 protected 访问),在此处解释您的行为。

更新 : 已在 https://github.com/krakjoe/pthreads/commit/ec1b2fdd6e562db7224662ed79125d8f6dde9f44 中修复

关于Php 似乎无法识别 $this 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41110371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com