I have a Silex application with a few services registered.
$app->register(new \Silex\Provider\TranslationServiceProvider(), array(
'locale_fallbacks' => array('en'),
'translator.message' => array()
));
$app->register(new \Silex\Provider\SecurityServiceProvider(), array(
'security.firewalls' => array(
'login' => array(
'pattern' => '^/admin/login$'
),
'secured' => array(
'pattern' => '^/admin/?.*$',
'form' => array(
'login_path' => '/admin/login',
'check_path' => '/admin/login_check',
'always_use_default_target_path' => true,
'default_target_path' => '/admin/en',
'failure_path' => '/admin/login'
),
// users are added from custom user repository
'users' => $app->share(function() use ($app) {
return $app['syn.user_repo'];
})
)
)
));
$app['syn.user_repo'] = $app->share(function($app) {
return new \Synergy\Application\User\UserRepository($app);
});
The User Repository returns a User() object with the credentials needed to log in. Everything works fine. However User(), is given access to the $app
application variable. which it uses to set a member level _translator variable. See below:
class User implements UserInterface
{
protected $_translator;
public function __construct($data = array(), $app)
{
$this->_translator = $app['translator'];
}
........
If I set $this->_translator, I get this error (which repeats a 100 times):
Fatal error: Maximum function nesting level of '100' reached,
aborting! in var/www/silex.dev/vendor/symfony/debug/Exception/FlattenException.php
on line 261 Call Stack: 0.0000 6356.......
I don't understand why this is happening. I cannot set any symfony service as member level without this error occurring.
Does any one know what this might be?
Edit: I'm beginning to think this is a problem with storing a reference to something that contains Symfony Application within my UserRepo as a property, and only as part of the Security Service. I can do that usually, but when in relation to Security Service it breaks.
I know this is an old question, but in case it helps someone new...
I had this error and finally found out why: I had defined a Controller Service which tried to include itself, something like:
I blame too much coffee and sleepless nights.