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
+
0
-

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
+
0
-

ano, je to tak jak rikas, nahrazuje to defaultni implementaci UserStorage

Čamo
Člen | 798
+
0
-

Díky.