2.2 → 2.3 User Deprecated Nette\DI\Container::__get() is deprecated; use getService() or enable di.accessors

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
simPod
Člen | 383
+
0
-

Přešel jsem na nette 2.3 a začal mi vyskakovat tenhle message:

User Deprecated

Nette\DI\Container::__get() is deprecated; use getService() or enable di.accessors in configuration.

Jak se toho zbavím? Žádné this->context->... nepoužívám. díky

Našel jsem tohle https://forum.nette.org/…s-deprecated ale to se mě asi netýká když this->context nepoužívám (?)

Jan Tvrdík
Nette guru | 2595
+
+1
-

Očidně to někde používáš. Koukni na callstack kde a přepiš to.

one-two
Člen | 80
+
0
-

nezůstalo ti to přímo v index.php?

simPod
Člen | 383
+
0
-

jo on to tam davidek nejak predelal. Kdyby nekdo hledal tak $container->getByType('Nette\Application\Application')->run(); viz sandbox. Díky

n.u.r.v.
Člen | 485
+
0
-

Dělá mě to taky a vůbec nevím čím to je. Nevypíše se tracy, pouze v error.log mám vždy a na každé stránce toto:

[2015-03-17 12-20-45] PHP User Deprecated: Nette\DI\Container::__get() is deprecated; use getService() or enable di.accessors in configuration. in /www/muj_project/www/stable/vendor/nette/di/src/DI/Container.php:337  @  https://beta.mujproject.cz/contact

Vůbec netuším čím to je

David Grudl
Nette Core | 8228
+
0
-

Zapni si plné logování pro E_NOTICE a najdeš to.

Tracy\Debugger::$logSeverity = E_NOTICE;
n.u.r.v.
Člen | 485
+
0
-

Edit: tak vyřešeno – z nějakého důvodu se mi nepřepsal hlavní index.php který byl postaru… Ale divné je, že tracy na serveru notice nevypisovala do logu i když jsem ji správně nastavil jak napsal David…

lukendo
Člen | 96
+
0
-

mám též stejný problém, context používám, ale pořád nevím jak to zprovoznit. BaseModel a zděděný model má takto:

<?php

namespace App\Model;
use Nette;

class BaseModel extends \Nette\Object   {
    protected $connection;
    protected $user;
    protected $tableName;

    public function __construct($tableName, \Nette\Database\Context $db)
    {
      $this->tableName  = $tableName;
      $this->connection = $db;
      $this->user = \Nette\Environment::getUser();
    }
}

<?php
namespace App\Model;
	class ItemModel extends BaseModel {
		private $table;
		public function __construct(\Nette\Database\Context $db) {
			$this->table = "items";
			parent::__construct($this->table, $db);
		}
	}

v configu v services toto :

itemModel: App\Model\ItemModel

jak je myšleno to že se mám podívat do callstacku? díky

n.u.r.v.
Člen | 485
+
0
-

Nejprve se podívej do www/index.php zda tam opravdu máš toto: $container->getByType(‚Nette\Application\Application‘)->run(); → abys to neřešil půl dne jako já…

pokud je index v pořádku a stále máš tu chybu v logu, tak si dej do app/bootstrap.php dolů před return ten kus kodu co radí DG níže…Tím ti bude tracy vytvářet plný úplný log i při chybách typu notice. V tom logu pak najdeš lépe kde ta chyba vzniká…

lukendo
Člen | 96
+
0
-

zkoušel jsem a pořád nic, nemůže být chyba někde v tom BaseModelu?

David Kudera
Člen | 455
+
0
-

Jediný problém toho modelu je ten, že pořád používá Environment, i když je už pořádně dlouho deprecated. Jinak tady se mluví o contextu, který je v presenteru a je instancí Nette\DI\Container ne o Nette\Database\Context. Edit: A další věc je, že v potomcích base modelu budeš mít table a tableName se stejnýma hodnotama, což je zbytečnost. To je ale jen tak bokem ;-)

Editoval David Kudera (19. 3. 2015 9:57)

kleinpetr
Člen | 480
+
0
-

Ahoj, mám úplně stejný problém a už si nevím rady, zapnutí logu taktéž nefunguje, $this->context používám snad jen na SecuredPresenteru, od kterého dědí ostatní Presentery, ten jsem se snažil upravit a stále nic.. poradil byste mi někdo ? moc díky

//původně
$this->getUser()->setAuthenticator($this->context->adminModuleAuthenticator);
//a jestli jsem správně pochopil, tak jsem to změnil na
$this->getUser()->setAuthenticator($this->context->getService('adminModuleAuthenticator'));

Editoval kleinpetr (9. 4. 2015 22:37)

kleinpetr
Člen | 480
+
0
-

Tak nakonec se mu nelíbilo routovaní v bootstrapu..

Čamo
Člen | 798
+
+1
-

Rád by som zviditeľnil odpoveď od n.u.r.v, ktorá sa týkala tohoto erroru a mala by byť trocha viac na očiach.

$container->application->run();

nahradiť za

$container->getByType(‚Nette\Application\Application‘)->run();

Editoval Čamo (4. 11. 2016 20:45)