Vysvetlil by mi niekto jedno extension a beforeCompile?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Čamo
- Člen | 798
Zdravím,
môže mi prosím vás niekto aspoň približne vysvetliť čo sa deje v jednom
rozšírení na ktoré som narazil.
Týka sa to userStorage-u ktorý je postavený nad Doktrínou. Ak som to dobre
pochopil, tak v nasledujúcom kóde metóda beforeCompile prepisuje defaultnú
Nette factory na userStorage a nahradzuje ju vlastnou(UserStorageStrategy). Je
to tak či sa mýlim?
class UserStorageExtension extends CompilerExtension
{
public function loadConfiguration()
{
$builder = $this->getContainerBuilder();
$builder->addDefinition($this->prefix('user'))
->setClass('Majkl578\NetteAddons\Doctrine2Identity\Http\UserStorage')
->setAutowired(FALSE);
$builder->addDefinition($this->prefix('guest'))
->setClass('App\Extensions\UserStorage\GuestStorage')
->setAutowired(FALSE);
}
public function beforeCompile()
{
$builder = $this->getContainerBuilder();
$userStorageDefinitionName = $builder->getByType('Nette\Security\IUserStorage') ? : 'nette.userStorage';
$builder->getDefinition($userStorageDefinitionName)
->setFactory('App\Extensions\UserStorage\UserStorageStrategy')
->addSetup('setUser', [$builder->getDefinition($this->prefix('user'))])
->addSetup('setGuest', [$builder->getDefinition($this->prefix('guest'))]);
}
}
Editoval Čamo (19. 11. 2015 3:17)
- David Matějka
- Moderator | 6445
ano, je to tak jak rikas, nahrazuje to defaultni implementaci UserStorage