@@ -34,90 +34,22 @@ public function getServiceLocator()
3434 /**
3535 * @return TestDbAcle;
3636 */
37- public static function create (\Pdo $ pdo , $ factoryOverrides = array ())
37+ public static function create (\Pdo $ pdo , $ factoryOverrides = array (), $ factories = null )
3838 {
39+ if (is_null ($ factories )) {
40+ $ factories = new Config \DefaultFactories ();
41+ }
3942
4043 $ testDbAcle = new TestDbAcle ();
41- $ serviceLocator = new ServiceLocator (array_merge (static ::getDefaultFactories ($ pdo ->getAttribute (\PDO ::ATTR_DRIVER_NAME )),$ factoryOverrides ));
42- $ serviceLocator ->set ('pdo ' , $ pdo );
44+
45+ $ serviceLocator = new ServiceLocator ($ factories ->getFactories ($ pdo ->getAttribute (\PDO ::ATTR_DRIVER_NAME )));
46+ $ serviceLocator ->addFactories ($ factoryOverrides );
47+ $ serviceLocator ->setService ('pdo ' , $ pdo );
4348
4449 $ testDbAcle ->setServiceLocator ($ serviceLocator );
4550
4651 return $ testDbAcle ;
4752 }
4853
49- public static function getDefaultFactories ($ pdoDriverName ){
50-
51- if ($ pdoDriverName =="sqlite " ){
52- return array_merge (static ::getDefaultFactoriesAllDrivers (), static ::getDefaultFactoriesSqlite ());
53- }else {
54- return array_merge (static ::getDefaultFactoriesAllDrivers (), static ::getDefaultFactoriesMysql ());
55- }
56-
57- }
58-
59- public static function getDefaultFactoriesAllDrivers (){
60-
61- return array (
62-
63- 'dataInserterFilterQueue ' => function (\TestDbAcle \ServiceLocator $ serviceLocator ) {
64- $ filterQueue = $ serviceLocator ->get ('filterQueue ' );
65- $ filterQueue ->addRowFilter (new Filter \AddDefaultValuesRowFilter ($ serviceLocator ->get ('tableList ' )));
66- return $ filterQueue ;
67- },
68- 'filterQueue ' => function (\TestDbAcle \ServiceLocator $ serviceLocator ) {
69- $ filterQueue = new Filter \FilterQueue ();
70- return $ filterQueue ;
71- },
72- 'upsertBuilderFactory ' => function (\TestDbAcle \ServiceLocator $ serviceLocator ) {
73- return new \TestDbAcle \Db \DataInserter \Factory \UpsertBuilderFactory ($ serviceLocator ->get ('pdoFacade ' ));
74- },
75-
76- 'tableList ' => '\TestDbAcle\Db\TableList ' ,
77- 'parser ' => '\TestDbAcle\Psv\PsvParser ' ,
78-
79- );
80- }
81-
82- public static function getDefaultFactoriesMysql (){
83-
84- return array (
85- 'dataInserter ' => function (\TestDbAcle \ServiceLocator $ serviceLocator ) {
86- $ dataInserter = new Db \DataInserter \DataInserter ($ serviceLocator ->get ('pdoFacade ' ), $ serviceLocator ->get ('upsertBuilderFactory ' ));
87- $ dataInserter ->addUpsertListener (new Db \DataInserter \Listeners \MysqlZeroPKListener ($ serviceLocator ->get ('pdoFacade ' ), $ serviceLocator ->get ('tableList ' )));
88- return $ dataInserter ;
89- },
90- 'pdoFacade ' => function (\TestDbAcle \ServiceLocator $ serviceLocator ) {
91- $ pdoFacade = new Db \Mysql \Pdo \PdoFacade ($ serviceLocator ->get ('pdo ' ));
92- $ pdoFacade ->disableForeignKeyChecks ();
93- $ pdoFacade ->enableExceptions ();
94- return $ pdoFacade ;
95- },
96- 'tableFactory ' => function (\TestDbAcle \ServiceLocator $ serviceLocator ) {
97- return new \TestDbAcle \Db \Mysql \TableFactory ($ serviceLocator ->get ('pdoFacade ' ));
98- },
99-
100- );
101- }
102-
103- public static function getDefaultFactoriesSqlite (){
104-
105- return array (
106- 'dataInserter ' => function (\TestDbAcle \ServiceLocator $ serviceLocator ) {
107- return new Db \DataInserter \DataInserter ($ serviceLocator ->get ('pdoFacade ' ), $ serviceLocator ->get ('upsertBuilderFactory ' ));
108- },
109-
110- 'pdoFacade ' => function (\TestDbAcle \ServiceLocator $ serviceLocator ) {
111- $ pdoFacade = new \TestDbAcle \Db \Sqlite \Pdo \PdoFacade ($ serviceLocator ->get ('pdo ' ));
112- $ pdoFacade ->disableForeignKeyChecks ();
113- $ pdoFacade ->enableExceptions ();
114- return $ pdoFacade ;
115- },
116- 'tableFactory ' => function (\TestDbAcle \ServiceLocator $ serviceLocator ) {
117- return new \TestDbAcle \Db \Sqlite \TableFactory ($ serviceLocator ->get ('pdoFacade ' ));
118- },
119-
120- );
121- }
12254
12355}
0 commit comments