2.2 → 2.3 User Deprecated Nette\DI\Container::__get() is deprecated; use getService() or enable di.accessors
- simPod
- Člen | 383
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 (?)
- n.u.r.v.
- Člen | 485
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
Zapni si plné logování pro E_NOTICE a najdeš to.
Tracy\Debugger::$logSeverity = E_NOTICE;
- lukendo
- Člen | 96
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
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á…
- David Kudera
- Člen | 455
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
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)