Hvordan kan jeg få tilgang til beholderen i en klasse som ikke er en tjeneste i Symfony 2

stemmer
1

Jeg har en tjeneste definert i min config.yml

services:
  kinorm_pdo:
    class: Pate\KinormBundle\Dbal\Db
    arguments: [%kinorm.db_driver%,%kinorm.db_user%,%kinorm.db_pass%,%kinorm.db_name%,%kinorm.db_host%,%kinorm.db_charset%]

Men jeg ønsker å ha tilgang til denne tjenesten i en klasse som ikke er en kontroller, og jeg forstår ikke hvordan du får tilgang til beholderen uten å injisere det.

Utgangspunktet Jeg vil bare gjøre

$user = new User();

og har inne $ brukeren tilgang til beholderen ...

Takk for alle råd!

Publisert på 16/06/2011 klokken 22:09
kilden bruker
På andre språk...                            


1 svar

stemmer
4

Vel, trenger du ikke har direkte tilgang til kontrolleren fra inne i et objekt med mindre du gjør injisere det (som er mest sannsynlig en dårlig idé, forresten) ... men hvis du vil at kinorm_pdotjenesten tilgjengelig fra bruker klassen, bare injisere det (forutsatt at du ikke kan starte klasse fra en container-klar sammenheng):

$user = new User($this->container->get('kinorm_pdo'));

eller

$user = new User();
$user->setPdo($this->container->get('kinorm_pdo'));

Legg merke til at det høres ut som du prøver å gi tilgang til databasen fra innsiden en enhet ... separasjon av bekymringer sier at dette er trolig ikke den reneste måten å oppnå hva du prøver å gjøre ... hvis du gir en liten mer informasjon om hva du prøver å oppnå, kan vi sannsynligvis hjelpe deg med det, også.

Svarte 16/06/2011 kl. 23:39
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more