mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-31 09:06:17 +00:00
Merge pull request #1176 from ceeram/2.3-3694
Throw exceptions only when datasource has wrong package. This is replaces instanceof checks with a more generalized check. Refs #3694
This commit is contained in:
commit
30247fd769
4 changed files with 14 additions and 7 deletions
|
@ -78,7 +78,6 @@ class ConnectionManager {
|
|||
*
|
||||
* @param string $name The name of the DataSource, as defined in app/Config/database.php
|
||||
* @return DataSource Instance
|
||||
* @throws MissingDatasourceConfigException
|
||||
* @throws MissingDatasourceException
|
||||
*/
|
||||
public static function getDataSource($name) {
|
||||
|
@ -99,17 +98,16 @@ class ConnectionManager {
|
|||
$conn = self::$_connectionsEnum[$name];
|
||||
$class = $conn['classname'];
|
||||
|
||||
$instance = new $class(self::$config->{$name});
|
||||
$instance->configKeyName = $name;
|
||||
|
||||
if (!$instance instanceof Datasource) {
|
||||
if (strpos(App::location($class), 'Datasource') === false) {
|
||||
throw new MissingDatasourceException(array(
|
||||
'class' => $class,
|
||||
'plugin' => null,
|
||||
'message' => 'Only classes extending Datasource can be used as datasources.'
|
||||
'message' => 'Datasource is not found in Model/Datasource package.'
|
||||
));
|
||||
}
|
||||
self::$_dataSources[$name] = $instance;
|
||||
self::$_dataSources[$name] = new $class(self::$config->{$name});
|
||||
self::$_dataSources[$name]->configKeyName = $name;
|
||||
|
||||
return self::$_dataSources[$name];
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,9 @@ App::uses('Model', 'Model');
|
|||
App::uses('AppModel', 'Model');
|
||||
App::uses('DataSource', 'Model/Datasource');
|
||||
App::uses('DboSource', 'Model/Datasource');
|
||||
App::uses('DboTestSource', 'Model/Datasource');
|
||||
App::uses('DboSecondTestSource', 'Model/Datasource');
|
||||
App::uses('MockDataSource', 'Model/Datasource');
|
||||
require_once dirname(dirname(__FILE__)) . DS . 'models.php';
|
||||
|
||||
class MockPDO extends PDO {
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
require_once dirname(__FILE__) . DS . 'ModelTestBase.php';
|
||||
App::uses('DboSource', 'Model/Datasource');
|
||||
App::uses('DboMock', 'Model/Datasource');
|
||||
|
||||
/**
|
||||
* DboMock class
|
||||
|
|
|
@ -17,6 +17,11 @@
|
|||
* @since CakePHP(tm) v 1.2.0.4206
|
||||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
||||
*/
|
||||
App::uses('MockTransactionDboSource', 'Model/Datasource');
|
||||
App::uses('MockTransactionAssociatedDboSource', 'Model/Datasource');
|
||||
App::uses('MockManyTransactionDboSource', 'Model/Datasource');
|
||||
App::uses('MockAssociatedTransactionDboSource', 'Model/Datasource');
|
||||
|
||||
require_once dirname(__FILE__) . DS . 'ModelTestBase.php';
|
||||
/**
|
||||
* ModelWriteTest
|
||||
|
|
Loading…
Add table
Reference in a new issue