First off you should add a constructor to your class and pass in the @doctrine.dbal.%connection_name%_connection service
namespace AcmeTestBundleToolbox;
use DoctrineDBALConnection;
class StringToolbox
{
/**
*
* @var Connection
*/
private $connection;
public function __construct(Connection $dbalConnection) {
$this->connection = $dbalConnection;
}
public function lookupSomething($foo)
{
$sql = "SELECT bar FROM bar_list WHERE foo = :foo";
$stmt = $this->connection->prepare($sql);
$stmt->bindValue("foo", $foo);
$stmt->execute();
return $bar;
}
}
Your service configuration should now look like this:
parameters:
my_service_connection: default
services:
toolbox:
class: AcmeTestBundleToolboxStringToolbox
arguments: [@doctrine.dbal.%my_service_connection%_connection]
What you are saying with this configuration is "make me a service named toolbox that will receive the doctrine.dbal.default_connection service as the first constructor argument"
There are other injection methods besides Constructor injection and you should read the http://symfony.com/doc/current/book/service_container.html documentation to get a grasp of all possibilities (Setter injection, Factory injection, etc) and to better understand how Dependency Injection works
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…