Задать вопрос
Nerfair
@Nerfair
Фулл-стак

Symfony Dependency Injection и свой класс как сервис?

Изучаю namespace'ы и dependency injection попутно с боевой задачей и столкнулся с проблемой, что когда пытаюсь зарегистрировать свой класс как сервис, компонент симфони его не находит. (вопрос на stackoverflow: stackoverflow.com/questions/22010568/symfony-depen...

Структура проекта

SHqL1Fd.png

Мой класс Generator

<?php

namespace Localhost\Service\String;

class Generator {

    private $iStringLength;

    public function __construct($iNewStringLength = 5) {
        $this->iStringLength = $iNewStringLength;
    }

    public function getRandomString() {
        $sChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $sRandChar = substr(str_shuffle(str_repeat($sChars,5)),0, $this->iStringLength);

        return $sRandChar;
    }
}


И Index.php

<?php

require_once 'vendor/autoload.php';

/*
spl_autoload_register(function ($sClass) {
    echo $sClass;
    require_once str_replace('\\', '/', $sClass) . '.php';
});
*/

use Localhost\Service\String\Generator;

/*
$oStringGenerator = new Generator(55);
echo $oStringGenerator->getRandomString();
*/

use Symfony\Component\DependencyInjection\ContainerBuilder;

$oContainer = new ContainerBuilder();
$oContainer
    ->register('generator', 'Generator')
    ->addArgument('15');

$oGeneratorService = $oContainer->get('generator');
echo $oGeneratorService->getRandomString();


Но получаю фатал

Fatal error: Uncaught exception 'ReflectionException' with message 'Class Generator does not exist' in D:\Localhost\Apache\htdocs\Test\vendor\symfony\dependency-injection\Symfony\Component\DependencyInjection\ContainerBuilder.php:959

Понятно что не нашло класс который регистрировать, но как его блин добавить, пока не представляю.
  • Вопрос задан
  • 3356 просмотров
Подписаться 2 Оценить 2 комментария
Решения вопроса 1
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
А вы при регистрации сервиса пробовали указать FQCN (полное имя класса):
$oContainer
    ->register('generator', 'Localhost\Service\String\Generator')
    ->addArgument('15');
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы