具有简单服务对象的服务容器

时间:2017-01-31 17:39:20

标签: php service containers

您好,有人可以,给我一个服务容器的简单示例,其中包含一个服务对象(在PHP中)。更确切地说。如何创建服务对象以及以后如何调用它。 我到处寻找,但找不到任何能清楚解释我的东西。这取自symfony文档。我找到的最好的例子,但仍然不理解。

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

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

1 个答案:

答案 0 :(得分: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]