Skip to content
GromNaN edited this page Dec 27, 2011 · 10 revisions

You phantasm on Symfony2 dependency injection container component, but you prefer working with symfony1 for now. Here your dreams come true. This fork integrate the discret dependency injection component as natural feature of the framework.

Define your services in services.yml files. As others config files, can be located in these places :

  • app/*/config/services.yml
  • config/services.yml
  • plugins/*/config/services.yml

Exemple of YAML definition file

Services definition is environment compatible (unlike Symfony2).

# */services.yml
all:
  parameters:
    auth_host: http://example.com/auth.php
  services:
    auth:
      class: myAuthService
      arguments:
        - %auth_host%

dev:
  parameters:
    auth_host: http://localhost/auth.php

test:
  services:
    auth:
      class: myAuthServiceMock

Core services

The symfony core already contains some services (defined in symfony/lib/config/config/services.yml):

  • sf_formatter
  • sf_event_dispatcher
  • sf_filesystem (operations are automatically logged)

These services can be used to define your own services. Is you see any service to add, please create an issue.

Call services

Services can be accessed from sfContext or any controller:

From an action

class myModuleActions extends sfActions
{
  public function executeIndex()
  {
    $fs = $this->getService('sf_filesystem');
    $fs->...
  }
}

Via sfContext

sfContext::getInstance()->getService('sf_filesystem');

From a task

class myTask extends sfTask
{
  public function run()
  {
    $fs = $this->getService('sf_filesystem');
    $fs->...
  }
}
Clone this wiki locally