Предположим таблица User определена в базе данных, отличной от базы данных
специфицированной в конфигурационном файле.
Вот модель таблицы:
class User extends CActiveRecord
{
// opendd(…) мы используем эту функцию для переключения на базу данных отличную от заданной в конфигурации
public static function opendb($connectionString,$username,$password)
{
//$connectionString='sqlite:'.'.......htdocs\blog\protected/data/blog.db'
self::$db=new CDbConnection($connectionString,$username,$password);
self::$db->active=true;
self::$db->tablePrefix='tbl_';
}
//
public static function model($className=__CLASS__)
{
return parent::model($className);
}
//
public function tableName()
{
return '{{user}}';
}
…
…
…
}
Здесь функция opendb() как раз и обеспечивает переключение на базу данных,
содержащую таблицу User. Переменная $db, определяется в классе CActiveRecord таким вот образом:
public static $db;
Все здесь работает как надо.
Вопрос заключается в следующем. Если переопределить $db в классе User, то функция opendb()
перестает работать. То есть, если написать вот так:
class User extends CActiveRecord
{
[b]public static $db;[/b]
// opendd(…) //мы используем эту функцию для переключения на базу данных отличную от заданной в конфигурации
public static function opendb($connectionString,$username,$password)
{
//$connectionString='sqlite:'.'.......htdocs\blog\protected/data/blog.db'
self::$db=new CDbConnection($connectionString,$username,$password);
self::$db->active=true;
self::$db->tablePrefix='tbl_';
}
//
public static function model($className=__CLASS__)
{
return parent::model($className);
}
//
public function tableName()
{
return '{{user}}';
}
…
…
…
}
то функция не работает…Чего тут я не понимаю, видимо, в наследование свойств в PHP…