2017-01-31 2 views
0

안녕하세요, 제게 PHP (하나의 서비스 객체)를 가진 서비스 컨테이너의 간단한 예제를 제공해주세요. 더 정확하게 말하면. 서비스 객체를 생성하는 방법과 나중에 객체를 호출하는 방법. 나는 도처에서 찾고 있었지만 명확하게 나를 설명하는 것을 찾을 수 없었다. 이것은 심포니 문서에서 가져온 것입니다. 내가 찾은 최고의 사례이지만 여전히 이해하지 못합니다.간단한 서비스 객체를 가진 서비스 컨테이너

use AppBundle\Mailer; 
use Symfony\Component\DependencyInjection\Definition; 

$container->setDefinition('app.mailer', new Definition(
    Mailer::class, 
    array('sendmail') 
)); 

답변

1

다음은 PDO "서비스"의 예입니다.

// Run: composer require symfony/dependency-injection 
require_once __DIR__ . '/vendor/autoload.php'; 

use Symfony\Component\DependencyInjection\ContainerBuilder; 
use Symfony\Component\DependencyInjection\Definition; 

$container = new ContainerBuilder(); 

$host = '127.0.0.1'; 
$db = 'test'; 
$user = 'root'; 
$pass = ''; 
$charset = 'utf8'; 

$dsn = "mysql:host=$host;dbname=$db;charset=$charset"; 
$opt = [ 
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
    PDO::ATTR_EMULATE_PREPARES => false, 
]; 

$container->setDefinition('app.pdo', new Definition(
    PDO::class, array($dsn, $user, $pass, $opt) 
)); 

var_dump($container->get('app.pdo')); // object(PDO)[8] 
+0

정말 고맙습니다. ungreatfull 소리하지 않으려 고하지만 심포니없는 순수한 PHP 예제가 될 수 있다고 생각한다면 감사합니다 :) – user2977046

+0

다음은 바닐라 PHP 서비스 컨테이너입니다 : https://gist.github.com/odan/d4b74104b50279de3e9ed4251ac2335b – DanielO

관련 문제