そもそも$developmentのDB設定がtest実行時に$testに切り替わる処理はどこで定義されているのでしょうか。
ClassRegistryのソースコードは、以下に格納されているので、中を見てもらえればわかると思います
/(プロジェクトルート)/lib/Cake/Utility/ClassRegistry.php
146行目付近から以下のように生成したModelオブジェクトに、TEST用の環境を設定しています。
CakePHP
1if (class_exists($class) || interface_exists($class)) {
2 $reflection = new ReflectionClass($class);
3 if ($reflection->isAbstract() || $reflection->isInterface()) {
4 throw new CakeException(__d('cake_dev', 'Cannot create instance of %s, as it is abstract or is an interface', $class));
5 }
6 $testing = isset($settings['testing']) ? $settings['testing'] : false;
7 if ($testing) {
8 $settings['ds'] = 'test';
9 $defaultProperties = $reflection->getDefaultProperties();
10 if (isset($defaultProperties['useDbConfig'])) {
11 $useDbConfig = $defaultProperties['useDbConfig'];
12 if ($availableDs === null) {
13 $availableDs = array_keys(ConnectionManager::enumConnectionObjects());
14 }
15 if (in_array('test_' . $useDbConfig, $availableDs)) {
16 $useDbConfig = 'test_' . $useDbConfig;
17 }
18 if (strpos($useDbConfig, 'test') === 0) {
19 $settings['ds'] = $useDbConfig;
20 }
21 }
22 }
23 ・・・
自分がPHPが良いなと思うところの一つに、スクリプト言語のためライブラリ側の処理の内容をすぐ確認できることがあります。
ですので、気になる部分はライブラリ側のコードを確認してはいかがでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/17 15:13