Symfony2: мой первый сервис - PullRequest
3 голосов
/ 26 февраля 2012

Я борюсь с ошибкой:

The autoloader expected class "ElectricAnimal\CardsinthepostBundle\Services\MyService" to be
defined in file
"/vhosts/domains/cardsinthepost.com/public/app/../src/ElectricAnimal/CardsinthepostBundle/Services/MyService.php".
You probably have a typo in the namespace or the class name.

Но этот класс * определен именно в этом файле!

/ src / ElectricAnimal / CardsinthepostBundle / Services/MyService.php:

<?php

// Bundle/ElectricAnimalCardsinthepost/Services/MyService.php
namespace Bundle\ElectricAnimalCardsinthepost\Services;

class MyService
{

    public function __construct()
    {

    }

    public function sum($n1, $n2) {
        return $n1 + $n2;
    }

}

В моем контроллере у меня есть:

<code><?php    
class DefaultController extends Controller
{

    public function indexAction()
    { 
        $number = $this->get('my_service')->sum(12, 37);

        return new Response('<pre>' . $number . '
');}}?>

Дополнительная информация:

/ src / ElectricAnimal / CardsinthepostBundle / DependencyInjection / ElectricAnimalCardsinthepostExtension.php:

<?php

namespace ElectricAnimal\CardsinthepostBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;

/**
 * This is the class that loads and manages your bundle configuration
 *
 * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
 */
class ElectricAnimalCardsinthepostExtension extends Extension
{
    /**
     * {@inheritDoc}
     */
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.yml');
    }
}

/ src / ElectricAnimal / CardsinthepostBundle/Resources/config/services.yml:

services:
    my_service:
        class: ElectricAnimal\CardsinthepostBundle\Services\MyService

1 Ответ

0 голосов
/ 26 февраля 2012

Мой ответ:

MyService.php использовал немного неправильное пространство имен.Требуется:

// Bundle/ElectricAnimal/Cardsinthepost/Services/MyService.php
namespace ElectricAnimal\CardsinthepostBundle\Services;

вместо

// Bundle/ElectricAnimalCardsinthepost/Services/MyService.php
namespace Bundle\ElectricAnimalCardsinthepost\Services;

Имена Symfony2 иногда приводят меня в тупик!

У меня уже был составленный вопрос, так что надеюсь, кому-нибудь понадобится этот ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...