Передача имени класса через переменную.

Slam

Новичок
Передача имени класса через переменную.

Возможно ли передать имя класса с помощью переменной?
Например, у меня есть класс, который может наследоваться от различных классов в зависимости от состояния переменной.

PHP:
// Класс, включающий поддержку работы с БД
require_once($db_driver . '.class.php');

class Framework_Abstract extends $db_driver
{
    
}
Как правильно это сделать?

Заранее благодарен!
 

monah

Новичок
возможно. некоторые так реализуют множественное наследование.
только зачем наследовать фреймворк от драйвера БД? его лучше как член хранить.
 

Slam

Новичок
Есть различные драйвера для доступа к БД.
Это файлы:

Framework_DB_MySQLi.class.php
Framework_DB_Postgree.class.php
и собственно
Framework_DB_Abstract.class.php,
который наследует тот или иной файл (Framework_DB_MySQLi.class.php или Framework_DB_Postgree.class.php).

Все неудобство в том, что в скрипте, который работает с БД, не нужно знать с какой БД он работает.
Для этого он создает екземпляр каласса Framework_DB_Abstract (который уже наследует тот или иной драйвер).
 

HraKK

Мудак
Команда форума
...... промолчу.

-~{}~ 10.01.07 00:28:

Потому что Gorynych все сказал :)
 

Slam

Новичок
Решил проблему следующим образом:
Класс Framework_DB_Abstract:
PHP:
// Класс, включающий поддержку работы с конкретной БД
require_once(_CFG_DB_DRIVER . '.class.php');

final class Framework_DB_Abstract 
{
    
    public static function get_driver()
    {
        $class_name = _CFG_DB_DRIVER;
        return new $class_name;
    }
}
А скрипт, который использует класс -
PHP:
include_once('../classes/Framework_DB_Abstract.class.php');

$db = Framework_DB_Abstract::get_driver();
if ($db->connect()) //.....
 

Lews

Новичок
А не проще сразу делать :

PHP:
$db = new $class_name();
if ($db->connect()) //.....
?
 
Сверху