Zvýrazňování syntaxe phpStorm
- kleinpetr
- Člen | 480
Ahoj,
snažím se přijít na způsob jak se zbavit zvýrazňování některých zápisů (nemyslím vypnutím upozorňování)
$user->identity->some_value; //Field some_value not found in class IIdentity..
$this->user->storage->setNamespace('...'); //To samé
A potom ještě když zjišťuji logoutReason tak
User::INACTIVITY
mi hlásí, že je deprecated,
ale nenašel jsem žádnou obdobu, jak to tedy je ?
Blbý je, že všechny tyhle případy jsou v nette příručce. Díky za rady :)
Editoval kleinpetr (16. 11. 2015 23:28)
- vitkutny
- Člen | 73
v php snad jedině použít instanceof
$identity = $user->getIdentity();
if($identity instanceof IdentityWithSomeValue){
$identity->some_value;
}
$storage = $this->getUser()->getStorage();
if($storage instanceof UserStorage){
$storage->setNamespace('...');
}
ohledně User::INACTIVITY ⇒ IUserStorage::INACTIVITY https://api.nette.org/…ser.php.html#29
Editoval vitkutny (17. 11. 2015 0:19)
- Oli
- Člen | 1215
Však to je v tom kodu. Je to deprecated, protože teď to máš volat na tý interface. https://api.nette.org/…age.php.html#…. V tom User to je jen kvůli zpětný kompatibilitě
- Martk
- Člen | 661
Já jsem to udělal následovně.
Vytvořil jsem si třídu např. My\User, která dědí z Nette\Security\User.
Zaregistroval změnu v DI:
$builder->getDefinition('user')
->setFactory('My\User');
Nová třída User:
namespace My;
/**
* @property-read Entity\User $identity
*/
class User extends Nette\Security\User {
/**
* @return Entity\User
*/
public function getIdentity() {
return parent::getIdentity();
}
V presenteru:
namespace My;
/**
* @property-read My\User $user
*/
class BasePresenter extends Nette\Application\UI\Presenter {
public function method() {
$this->user->getIdentity(); $this->user->identity; // Našeptáva Entity\User
}
}
Snad jsem na nic nezapomněl.