2013-01-16 39 views
0

我想在symfony2中檢索doctrine2 dbal連接當前使用的密碼。如何在symfony2中獲取用於docbal dbal連接的密碼?

如果我使用$kernel->getContainer()->getParameter('database_password'),我可以找到在parameters.yml中定義的一個,但是如果我爲某些環境定義了不同的密碼(例如在config_test.yml中),那麼參數.yml中的數據是無用的。

現在,如果我看看$kernel->getContainer()->getParameterBag()->all(),我仍然無法找到它。

如果你想知道爲什麼?我在一個函數中使用了一個鎖機制,並且我試圖使用register_shutdown_function()來刪除那個鎖,以防在發生致命錯誤的情況下,使用php內建的mysql或pdo函數,因爲此時大部分框架都關閉了。

回答

1

如果你不能檢索它,那麼你也不會有數據庫連接。

來自測試環境的參數不會被加載到dev,prod,...環境中! 在壓倒一切的情況下,定義parameters.yml所有連接參數

//parameters.yml 
database_prod_name: prod 
database_prod_user: prod_user 
database_prod_password: prod_password 

database_dev_name: dev 
database_dev_user: dev_user 
..... 

//config_prod.yml 
doctrine: 
    dbal: 
     dbname: "%database_prod_name%" 
     user:  "%database_prod_user%" 
     password: "%database_prod_password%" 
.... 

也是一樣的使用所有其他環境。

+0

我猜它保持這種狀態是最好的實踐。謝謝。 – bksunday

1

,如果你需要通過內核對象使用訪問下面代碼容器和連接:

$connection = $kernel->getContainer()->get('doctrine')->getConnection(); 

,如果你需要獲取和設置容器參數,您可以使用下面的代碼:

$container->setParameter('database_name', 'xyz'); 
$db_password = $container->getParameter("database_password"); 
相關問題