sto sviluppando un sistema ZF2 e funzionava molto bene, ma dopo che ho clonare il repository in un altro computer è apparso questo errore Deprecated:deprecato: Recupera locator servizio nel sistema funzionale - ZF2
Sei recupero del localizzatore di servizio dalla classe Module \ Controller \ Controller. Si tenga presente che ServiceLocatorAwareInterface è deprecato e verrà rimosso nella versione 3.0, insieme a ServiceLocatorAwareInitializer. Sarà necessario aggiornare la classe per accettare tutte le dipendenze alla creazione, tramite argomenti del costruttore o setter e utilizzare una fabbrica per eseguire le iniezioni. in /home/path/project/vendor/zendframework/zend-mvc/src/Controller/AbstractController.php on line 258
Il composer.json:
"require": {
"php": ">=5.5",
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"zendframework/zendframework": "~2.5",
"doctrine/doctrine-orm-module": "0.*",
"hounddog/doctrine-data-fixture-module": "0.0.*",
"imagine/Imagine": "~0.5.0"
L'errore appare quando a recuperare il servizio nel mio controller (che si estende Zend \ Mvc \ controller \ AbstractActionController):
$this->getServiceLocator()->get("Module\Service\Service");
nel nucleo Zend a Zend \ Mvc \ controller \ AbstractController è come questo:
012.public function getServiceLocator()
{
trigger_error(sprintf(
'You are retrieving the service locator from within the class %s. Please be aware that '
. 'ServiceLocatorAwareInterface is deprecated and will be removed in version 3.0, along '
. 'with the ServiceLocatorAwareInitializer. You will need to update your class to accept '
. 'all dependencies at creation, either via constructor arguments or setters, and use '
. 'a factory to perform the injections.',
get_class($this)
), E_USER_DEPRECATED);
return $this->serviceLocator;
}
Prima era solo questo:
public function getServiceLocator()
{
return $this->serviceLocator;
}
Ho provato di tutto, qualcuno sa che cosa ho a che fare?
È proprio lì nel messaggio: "Dovrai aggiornare la tua classe per accettare tutte le dipendenze alla creazione, sia via c argomenti o setter di onstructor e utilizzare una fabbrica per eseguire le iniezioni. –
Non ho capito molto bene questo messaggio, "è necessario aggiornare la classe" ma quale classe? –
Possibile duplicato di [PHP Deprecato: stai recuperando il localizzatore di servizio dalla classe ZFTool \ Controller \ ModuleController] (http://stackoverflow.com/questions/35933113/php-deprecated-you-are-retrieving-the-service -locator-from-the-class-zft) –