Создать объект наследника родителя

niko42

Новичок
Здравствуйте!

Есть такая конструкция:

PHP:
class Main {}

class BD{}//коннект к БД
class Catalog_BD extends BD{}//взаимодействие с БД каталог
Уточните, пожалуйста, а есть ли возможность создать объект в классе Main
PHP:
catalogBD = new Catalog_BD ();
при этом не инклюдить класс Catalog_BD

Т.е. хочу тупо в классе Main унаследовать класс BD и спокойно создавть объекты, которые унаследовали класс BD

Пояснение: есть ли возможность, сначало обратиться к родительскому классу, а потом уже от родительского класса обращаться к классам наследников
 

hell0w0rd

Продвинутый новичок
Зачем наследовать класс БД?
Объект работающий с БД надо один раз создать и юзать, либо через singleton, либо через контейнер DI
Через singleton проще, ибо не надо думать о архитектуре)
 

niko42

Новичок
Зачем наследовать класс БД?
Объект работающий с БД надо один раз создать и юзать, либо через singleton, либо через контейнер DI
Через singleton проще, ибо не надо думать о архитектуре)
Класс BD - отвечает за подключение к базе данных, а каталог Catalog_BD отвечет уже за саму таблицу + запросы
 

hell0w0rd

Продвинутый новичок
Класс BD - отвечает за подключение к базе данных, а каталог Catalog_BD отвечет уже за саму таблицу + запросы
Но зачем наследовать-то?
Класс БД - предоставляет API для запросов. Класс каталога - модель, работающая с АПИ.
 

niko42

Новичок
Но зачем наследовать-то?
Класс БД - предоставляет API для запросов. Класс каталога - модель, работающая с АПИ.
Простите, возможно я допустил ошибку в коде: класс main не будет наследовать класс BD

Я могу сделать вот:
static public function instance()

а потом public function run($class){
// и тут свичем пробежать и сздать объект
}

А возможно ли сразу напряму это сделать?

$catalog = new DB->Catalog_BD() // что-то такого
 

niko42

Новичок
короч хочу импортировать один раз в одном месте класс BD, а уже от него создавать любые объекты, которые потомки класса BD

Вопрос, возможно ли это и примерно как ?=)

P.S. хочется создавать объекты именно от класса BD, а не от одиночек
 

hell0w0rd

Продвинутый новичок
niko42
Ну создвавай, кто мешает-то?
Только вот зачем? Для чего это нужно-то объясни?
Наследование через extends
 

niko42

Новичок
niko42
Ну создвавай, кто мешает-то?
Только вот зачем? Для чего это нужно-то объясни?
Наследование через extends
мешает то, что я импортирую в index.php только класс main и класс BD
Но в классе маин я хочу создать объект catalog_bd который унаследовал класс BD
Не понятно, как вот это можно сделать
 

niko42

Новичок
Т,Е, могу ли я обратиться через родительский класс к его потомку?
 

fixxxer

К.О.
Партнер клуба
у тебя неправильно все. модель не должна наследоваться от класса базы данных

class Catalog extends Database {
function foo()
$this->query... - это неправильно

сделай Database синглтоном

и пиши так

PHP:
class Catalog {

    function foo() {
        Database::getInstance()->query(......)
    }

}
 

niko42

Новичок
у тебя неправильно все. модель не должна наследоваться от класса базы данных

class Catalog extends Database {
function foo()
$this->query... - это неправильно

сделай Database синглтоном

и пиши так

PHP:
class Catalog {

    function foo() {
        Database::getInstance()->query(......)
    }

}
Большое спасибо за совет!!!
 

WMix

герр M:)ller
Партнер клуба
fixxxer
конечно может, и од сервиса и от базы и от файлового поинтера, не все ли равно от чего она наследована?, бывает абстрактная бывает конкретная!
 

fixxxer

К.О.
Партнер клуба
Где я сказал, что не может? :)

Можно, конечно. Но не нужно.
 
Сверху