Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   PHP наследование в классе модели (https://javascript.ru/forum/server/43367-php-nasledovanie-v-klasse-modeli.html)

Duda.Ml1986@gmail.com 03.12.2013 10:32

PHP наследование в классе модели
 
Всем привет.
Вообще вопрос изначально звучать должен как паттерны наследования в ооп.
Что мне нужно.
Есть класс работы с моделью ДБ
Есть класс Модель который наследуют все модели через extends
Есть просто классы моделей как Продукт, Собака, Человек и т.д.

Как создать экземпляр класса БД (Сиглтон) в классе Модель и потом иметь доступ к его экземпляру из классов наследников Модели.

Подскажите направление куда рыть.

Пока есть только возможность нипосредственно подкл. класс ДБ и в синглтоне использовать, но подключение во всех файлах моделей а хотелось бы единожды в предке. Спасибо.

jsru_ 03.12.2013 10:38

как вариант: передавай инстанс подключения к базе как параметр при создании инстанса предка, в __construct лови его и присваивай защищенной переменной.

vasa_c 03.12.2013 11:01

Что значит "создать в классе"? Создавать надо в объекте.
И доступ к нему нужно иметь из объектов.

Duda.Ml1986@gmail.com 04.12.2013 10:22

Спасибо всем ответившим.
Попробую переформулировать вопрос.
Есть класс А с возможностью работы с БД
Есть класс Б у которого есть экземпляр класса А в поле БД
Есть множество наследников класса Б, но неудается получить доступ к полю класса Б который содержит обьект класса БД,.
Дело в том что класс А работы с БД есть синглтон, а потомки класса Б немогут обратиться к полю протект.
Есть возможность получить доступ для работы с БД из поля класса потомков класса Б, не через методы?

Duda.Ml1986@gmail.com 04.12.2013 10:24

Цитата:

Сообщение от jsru_ (Сообщение 284212)
как вариант: передавай инстанс подключения к базе как параметр при создании инстанса предка, в __construct лови его и присваивай защищенной переменной.


А наследники как? через методы?

Ruzarh 08.12.2013 13:42

<?php

class db  {

	private static $_instance;

	private function __construct () 
	{

	}

    public static finction instance()
    {
    	if (is_null(self::$_instance)) {
    		self::$_instance = new self();
    	}
    	return self::$_instance;
    }


}


где надо используй

db::instance();


db::instance();

kostyanet 05.01.2014 16:46

Цитата:

Сообщение от Duda.Ml1986@gmail.com
Дело в том что класс А работы с БД есть синглтон,

Синглетон для того и делается, чтобы с любого места добиться от него взаимности. Это ж статика фактически, в извращенной форме.


Часовой пояс GMT +3, время: 06:08.