Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: получить родител я в класс (ООП)
и теперь самое главное.
в классе EYE есть переменная config, которая является классом с конфигурацией системы
для вызова названия системы например можно вызвать: $EYE->config->title
а есть например в классе EYE переменная db, которая содержит функции для работы с базой.
например для конекта к базе надо вызвать $EYE->db->connect();
так вот. при создании класса (в __construct) мне надо прописать пару значений:
но это не работает!
если я сделаю в конструкторе так: print_r($this->EYE) , то получаю класс EYE, в котором есть конфиги... норм вроде все. но вызвать их у меня не получается... кто нибудь может подсказать как это делается?
т.е. грубо говоря что мне нужно
есть основной родительский класс
есть классы, которые наследуют этот самый родительский класс
мне нужно чтоб в этих классах был доступен полностью родительский класс, его функционал и переменные...
дан основной класс PARENT_CLASS
в нем при создании (в __construct() ) создаются переменные : $this->db = new db();
$this->config = new config();
$this->uri = new uri();
и т.д.
каждый из этих классов создается таким образом: class %CLASSNAME% extends PARENT_CLASS {
// тут какие то коды
}
таким образом я могу обращаться к примеру к конфигам так: $PARENT_CLASS->config->foo
при использовании на сайте вообщем все просто.
но мне нужно чтобы например в классе db был доступен класс config
обратиться так: parent::config я не могу, так как мне нужно конкретные данные.
поэтому мне нужно чтобы в классе db была переменная PARENT_CLASS которая была бы ссылкой на класс PARENT_CLASS
чтобы я мог в любом месте класса db получить нужные мне например конфиги: $PARENT_CLASS->config->db_name
но вот как это сделать.. я не знаю
как вариант делать в каждой функции так:
global $PARENT_CLASS
но это согласитесь не очень удобно, проще чтобы сразу в классе была копия родительского класса...
----- о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
DeepVarvar
Отправлено: 12 Ноября, 2010 - 10:41:29
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Вездеход пишет:
но это не работает!
А ошибки выводит какие или просто белый экран??? (Добавление)
DeepVarvar пишет:
global $PARENT_CLASS
!!!!!!!!!!!!!!! О, народ, а у меня те же вопросы!!! Как-то это делается, гдето я видел, но вот не помню... (Добавление)
Эээ, вроде нашол:
класс $PARENT_CLASS должен быть абстрактным... Эх некогда разбираться...
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Вездеход
Отправлено: 12 Ноября, 2010 - 13:30:55
Частый посетитель
Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008 Откуда: Россия
Помог: 0 раз(а)
DeepVarvar
ссылку почитал, спасибо
полезно, но ответа там не нашел.. ((
----- о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
Вездеход
Отправлено: 13 Ноября, 2010 - 07:40:57
Частый посетитель
Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008 Откуда: Россия
Помог: 0 раз(а)
даже не верится что никто не знает...(((
----- о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
Варяг
Отправлено: 13 Ноября, 2010 - 09:11:18
Новичок
Покинул форум
Сообщений всего: 61
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
не совсем понятно в чем проблема. при наследовании переменные становятся доступными в классе-наследнике. Для вызова методов (насколько я понимаю) нужно создать объект класса. В PHP 5 создаются ссылки на объекты, поэтому клоны нужно делать самому.
Область видимости задается доступностью переменных.
//просто так мы не получим name, нам нужно вызвать конструктор EYE.
function __construct(){
parent::__construct();
}
}
могу ошибаться, т.к. не использовал пока это
JustUserR
Отправлено: 14 Ноября, 2010 - 01:57:17
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Вездеход пишет:
И функция для получения копии этого класса
Приведенная вами функциия обеспечивающая предполагаемых действий по получению копии экземпляра данного класса не осуществляет выполнение целевой фунциональности - при этом причиной такого проявления выполняемого кода является особенности механизма представления ООП-объектов в языка PHP5 Дело в том что основание хранение ресурсных элементов обеспечивется в соответствии с задаваемыми пространствами имен и текущими областями видимости - в частности конструкция класса является оболочной для именованной области элементов с включением функций промежуточной обработки информационных полей - для обеспечения работоспособности системы активный свойств properties Таким образом фактическая реализация копирования экземпляра может быть обеспечена при услови выполнение операций присваивания для информационных полей простых типов - и генерации соответствующих функций промежуточной обработки
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.