public function testSetSubclassDb() { $adapter1 = $this->getMockAdapter(); $adapter2 = $this->getMockAdapter(); $adapter3 = $this->getMockAdapter(); ZendDb::setDefaultDb($adapter1); BaseSuperClass::setDefaultDb($adapter2); $instance1 = new BaseSuperclass(); $this->assertSame($adapter2, $instance1->publicGetDb()); $this->assertSame($adapter2, $instance1::publicStaticGetDb()); // Set the subclass db adapter BaseSubClass::setDefaultDb($adapter3); // The superclass instance adapter should stay the same $this->assertSame($adapter2, $instance1->publicGetDb()); $this->assertSame($adapter2, $instance1::publicStaticGetDb()); // Create new instance of subclass $instance2 = new BaseSubclass(); $this->assertSame($adapter3, $instance2->publicGetDb()); $this->assertSame($adapter3, $instance2::publicStaticGetDb()); }
/** * Return the default Zend\Db\Adapter for this class * * @throws ConfigException * @return Adapter */ protected static function getDefaultDb() { // Use subclass default db (set via MySubClass::setDefaultDb()) $calledClass = get_called_class(); if (isset(self::$_subclassDefaultDb[$calledClass]) && self::$_subclassDefaultDb[$calledClass]) { return self::$_subclassDefaultDb[$calledClass]; } // Use superclass default db if (static::$_classDefaultDb) { return static::$_classDefaultDb; } // Use global ActiveRecord default db if ($db = ZendDb::getGlobalDefaultDb()) { return $db; } throw new ConfigException('Please configure a Zend\\Db\\Adapter instance to use with ActiveRecord.'); }