4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\DependencyInjection\Loader\Configurator\Traits;
14 use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
21 * @param string|array $factory A PHP callable reference
25 final public function factory($factory)
27 if (\is_string($factory) && 1 === substr_count($factory, ':')) {
28 $factoryParts = explode(':', $factory);
30 throw new InvalidArgumentException(sprintf('Invalid factory "%s": the `service:method` notation is not available when using PHP-based DI configuration. Use "[ref(\'%s\'), \'%s\']" instead.', $factory, $factoryParts[0], $factoryParts[1]));
33 $this->definition->setFactory(static::processValue($factory, true));