У меня есть проблема с моим пользовательским классом, расположенную в:ZF2 с использованием PHP5 против PHP7
module/SomeModule/src/SomeModule/Model/someClass.php
Я получаю адаптер базы данных, как это с помощью ServiceLocator
(точно так, как in this Learning Zend Framework 2 tutorial) на:
public function getAdapter()
{
if (!$this->adapter) {
$sm = $this->getServiceLocator();
$this->adapter = $sm->get('Zend\Db\Adapter\Adapter');
}
return $this->adapter;
}
В PHP 5 работает отлично, но в PHP 7 это не так. Кажется, что класс больше не ServiceLocatorAware
в PHP 7. И дает эту ошибку:
Fatal error: Uncaught Error: Using $this when not in object context in C:\Zend9\Apache24\htdocs\Project\module\Account\src\Account\Model\User.php:316
Stack trace:
#0 C:\Zend9\Apache24\htdocs\Project\module\Account\src\Account\Model\User.php(271): Account\Model\User::getAdapter()
#1 C:\Zend9\Apache24\htdocs\Project\module\Account\src\Account\Controller\LoginController.php(40): Account\Model\User::userLogin('xxx', 'xxx')
#2 C:\Zend9\ZendServer\data\libraries\Zend_Framework_2\2.4.9\library\Zend\Mvc\Controller\AbstractActionController.php(82): Account\Controller\LoginController->indexAction()
#3 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
#4 C:\Zend9\ZendServer\data\libraries\Zend_Framework_2\2.4.9\library\Zend\EventManager\EventManager.php(444): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#5 C:\Zend9\ZendServer\data\libraries\Zend_Framework_2\2.4.9\library\Zend\EventManager\EventManager.php(205): Zend\EventManager\EventManager->trigg
in C:\Zend9\Apache24\htdocs\Project\module\Account\src\Account\Model\User.php on line 316
Любой человек может сказать мне, почему эта разница между PHP 5 и PHP 7 и как решить ее?
ли вы начать с проверки журналов ошибок – RiggsFolly
Какую версию PHP5 ты использовал до PHP7 скачка – RiggsFolly
PHP 5.6, журнал ошибок показывает: \t Использование $ это, когда не в контексте объекта – user3130983