Php没有';我似乎没有意识到这个变量的重要性
我写了一些代码,它有一些奇怪的行为它会为我声明的所有私有和受保护变量抛出致命错误,即使我将它们与前面的Php没有';我似乎没有意识到这个变量的重要性,php,apache,ubuntu,this,private,Php,Apache,Ubuntu,This,Private,我写了一些代码,它有一些奇怪的行为它会为我声明的所有私有和受保护变量抛出致命错误,即使我将它们与前面的$this一起使用。似乎无法识别$this变量的范围 我使用php版本7.1.0和apache版本2.4.23(并安装了mpm worker)、Netbeans和Ubuntu 16.04。我还使用pThreads()。我在网上搜索,没有发现任何类似的问题 我的类从中扩展的池类是一个pthread类。 e、 g 我得到的错误如下: PHP致命错误:未捕获错误:无法访问私有属性interfacePo
$this
一起使用。似乎无法识别$this
变量的范围
我使用php版本7.1.0和apache版本2.4.23(并安装了mpm worker)、Netbeans和Ubuntu 16.04。我还使用pThreads()。我在网上搜索,没有发现任何类似的问题
我的类从中扩展的池类是一个pthread类。
e、 g
我得到的错误如下:
PHP致命错误:未捕获错误:无法访问私有属性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)
类interfacePool
位于interface.controller.php
文件中(我不想从其他地方访问这些变量)。
这些错误贯穿整个项目;无论我在哪里都有保护变量或私有变量。这只是pthreads中的一个bug 错误地使用了
EG(假作用域)
,结果是构造函数调用的NULL
作用域,而不是zend\u get\u executed\u作用域
。(此行fcc.calling_scope=scope;
应改为fcc.calling_scope=zend_get_executed_scope();
)
而NULL
范围在内部相当于不在任何类上下文中(即没有私有或受保护的访问),在这里解释您的行为
更新:已修复请也发布您的“Pool”课程。编辑:没关系,它来自pthreads扩展。请提供跟踪中所有文件的代码。我能想象的唯一一件事是,你有一个可调用或其他东西的动态调用。因此您超出了范围。池类来自pthreads,您可以在这里看到:pthreads已经有了PHP7.1的版本?恐怕还没有更新。@pemapmoder只有PECL/last-taged版本没有更新,但是master应该可以使用它。我已经向pthreads的维护人员ping过它-希望它能很快得到修复:-)
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