File tree Expand file tree Collapse file tree 1 file changed +5
-2
lines changed Expand file tree Collapse file tree 1 file changed +5
-2
lines changed Original file line number Diff line number Diff line change @@ -499,15 +499,18 @@ private function generateService($name)
499499 );
500500 }
501501
502- $ serviceRef = $ this ->getServiceName ($ def ->factory ->entity );
502+ $ entity = $ def ->factory ->entity ;
503+ $ serviceRef = $ this ->getServiceName ($ entity );
503504 $ factory = $ serviceRef && !$ def ->factory ->arguments && !$ def ->setup && $ def ->implementType !== 'create '
504505 ? new Statement (array ('@ ' . ContainerBuilder::THIS_CONTAINER , 'getService ' ), array ($ serviceRef ))
505506 : $ def ->factory ;
506507
507508 $ code = '$service = ' . $ this ->formatStatement ($ factory ) . "; \n" ;
508509 $ this ->currentService = $ name ;
509510
510- if ($ def ->class && $ def ->class !== $ def ->factory ->entity && !$ serviceRef ) {
511+ if ($ def ->class && !$ serviceRef && $ def ->class !== $ entity
512+ && !(is_string ($ entity ) && preg_match ('#^[\w \\\\]+\z# ' , $ entity ) && is_subclass_of ($ entity , $ def ->class ))
513+ ) {
511514 $ code .= PhpHelpers::formatArgs ("if (! \$service instanceof $ def ->class ) { \n"
512515 . "\tthrow new Nette \\UnexpectedValueException(?); \n} \n" ,
513516 array ("Unable to create service ' $ name', value returned by factory is not $ def ->class type. " )
You can’t perform that action at this time.
0 commit comments